Bancos de dados como o MongoDB são ótimos quando você geralmente sabe onde estão seus dados (em vez de precisar escrever várias consultas complicadas). Com o Mongo, os dados "relacionados" são aninhados nos dados pai ou possuem chaves primárias / estrangeiras. Isso é ótimo se, por exemplo, você tiver Postagens e Comentários; geralmente, você não exibirá comentários fora do contexto de uma postagem; portanto, faz sentido que os comentários sejam contidos em uma postagem (dessa forma, você obtém todos os comentários da postagem sem precisar consultar uma tabela separada).
O MongoDB não possui esquema. Isso significa que será necessário qualquer estrutura de dados que você lançar nela, na maior parte.
Por outro lado, se você precisar usar funções agregadas e sentir a necessidade de consultar dados de maneiras complexas que não podem ser alcançadas por meio de incorporações ou relações simples no Mongo, é quando você sabe que é hora de usar um RDBMS como MySQL ou PostgreSQL.
O MongoDB não pretende substituir o SQL. Ele simplesmente atende a diferentes necessidades, e o MongoDB e um RDBMS podem ser usados em conjunto. Na minha opinião, o MongoDB não é tudo o que é necessário se você não precisar que seus dados sejam flexíveis ou incorporados a um documento pai. O desenvolvimento com o MongoDB é muito divertido, porque há muito menos etapas envolvidas na instalação e execução de um projeto (digamos no Rails). Precisa fazer uma alteração? Sem problemas. Basta adicionar um atributo ao seu modelo. Feito.
Não posso falar em muitos outros bancos de dados NoSQL, embora saiba que eles geralmente são projetados de maneira semelhante para atender a uma necessidade específica que não pode ser atendida por um RDBMS. Alguns residem inteiramente na memória ou podem ser fragmentados ou redimensionados com muita facilidade. Tenho certeza de que o Cassandra foi projetado para continuar operando sem perda de dados se um nó cair. O Redis é basicamente um armazenamento de valores-chave que reside na memória (com gravações periódicas em disco para persistência), mas também tem a capacidade de armazenar tipos de dados como conjuntos e classificá-los.