When a product is pushed as essentially a silver-bullet -- often by people who have never and will never actually build anything with it -- it is naturally going to get a lot of backlash by people who see through the problems, and moreso by those who buy the hype and then smash into the reality halfway through their projects.
I speak from personal experience on the first point, while the second has come from countless real-world case studies. A couple of years back I had several widely distributed pieces declared "trolls" because I essentially called for a sobering reset on the NoSQL hype train. Every single thing I said has been well proven out since, so there's that.
My side projects are where I have the most freedom and I just recently built and open sourced Obvious - http://obvious.retromocha.com. It makes it easy to build apps with good structure, good testing, and with pluggable front and back ends. So, if I want to switch out Mongo for MySQL or Postgres, it's basically painless.
Nowadays, I have begun to defer my database choice until I absolutely have to put an app into production if possible. That way I can write an app and have it working without worrying too much about queries, caching, and so on until I need to actually put it out on a real server.
MySQL, Mongo, HBase, Cassandra, Postgres, Riak, Redis, Memcache, Couchbase, Filesystem? It doesn't matter.
They're all going to break at different times for different reasons depending on how you use them and what scale you are at. Everything breaks at scale eventually.
Build something awesome enough that it breaks under the user load. That's a good problem to have.