Abstracting over your database only makes sense if you're writing something that's lowest common denominator. If your application runs equally well on MongoDB and something else you either are running poorly on both or you are spending a lot of resources on writing your abstraction layer.
Source: my last employer used MongoDB, and switching to an RDBMS would have forced us to rewrite ~80% of the codebase.