I have to agree with the author, especially since the points he raises are the ones that helped me greatly on my first &quot;serious&quot; personal project[1].<p>Coming from postgresql land I would have never thought you can have such great replication with automatic failover. I&#x27;ve had literally 100% uptime for the past year.<p>And that&#x27;s on commodity servers (one of them being in a room in my apartment, the other two in a proper datacenter) going through the usual upgrades, downtime, reboots, going from mongo 2 to mongo 3 and such.<p>Speaking of which, the migration from mongo2 to mongo3 was another pleasant surprise: they&#x27;ve made it backwards compatible. So I could do the upgrade on the servers, one by one, checking everything was ok and after that I could focus on updating the drivers and rewriting the deprecated queries, no need to have everything ready at once.<p>The accessible oplog was another gem that fit my project really well. Gone was the need to poll the database, I could just &quot;watch&quot; the oplog. That, coupled with long polling on the browser side meant I&#x27;d have very little chatter between the db&#x2F;server&#x2F;web client when idle. Websockets would have been nice, but adoption wasn&#x27;t high enough that I&#x27;d be comfortable going forward with it.<p>And all this considering MongoDB was my first NoSQL experience.<p>I agree it doesn&#x27;t fit every project, but when it does, it&#x27;s a really nice experience.<p>[1] <a href="https:&#x2F;&#x2F;graticule.link&#x2F;" rel="nofollow">https:&#x2F;&#x2F;graticule.link&#x2F;</a>