What cases do you have in mind?
We continually hear about how great MongoDB supposedly is from its advocates, with them claiming it's suitable as a general-purpose database.
Yet when somebody who has apparently used it in a production setting speaks out against it and its numerous flaws, the problem isn't with MongoDB. No way! It's a "problem" with the app "not being suited for" what MongoDB is "good at".
Those are two areas in particular where I would first look to Mongo.
I don't really know what you mean about the design being "broken", unless you mean that it's "different", in which case I would agree.
As for write confirmation, you have flexibility in that regard. You don't need to be checking getLastError for write confirmation[0], though if you wanted to use a broken pattern, you could.
As for JSON, Postgres has first class support for JSON data field types.