I have to agree with the author, especially since the points he raises are the ones that helped me greatly on my first "serious" personal project[1].<p>Coming from postgresql land I would have never thought you can have such great replication with automatic failover. I've had literally 100% uptime for the past year.<p>And that'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'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 "watch" the oplog. That, coupled with long polling on the browser side meant I'd have very little chatter between the db/server/web client when idle. Websockets would have been nice, but adoption wasn't high enough that I'd be comfortable going forward with it.<p>And all this considering MongoDB was my first NoSQL experience.<p>I agree it doesn't fit every project, but when it does, it's a really nice experience.<p>[1] <a href="https://graticule.link/" rel="nofollow">https://graticule.link/</a>