¿Cuáles son los principales beneficios de usar MongoDB en aplicaciones web?

Un par de cosas:

* Es un puente realmente agradable entre SQL y NoSQL. Mongo, especialmente cuando usa un ORM, tiene muchas características que son similares a las bases de datos relacionales, por lo que es una manera fácil de mojarse los pies con los almacenes de documentos.
* Se asigna muy bien a la mayoría de los lenguajes dinámicos. Dado que comprende matrices y hashes de forma nativa, casi se siente como una base de datos de objetos cuando se usa con Ruby.
* MapReduce tiene una buena interfaz. Su implementación de JavaScript es mucho más limpia que otras tiendas NoSQL.
* Está volviendo loco rápidamente.
* Las operaciones atómicas le permiten hacer algunas cosas que necesitarían una transacción en una base de datos relacional.
* Las consultas geoespaciales están integradas. No dependas más de terceros para estas cosas, a menos que tengas necesidades realmente específicas o necesites ser extremadamente preciso.

Dicho esto, hay cosas sobre Mongo que son agradables, pero que tienen más que ver con el contraste entre bases de datos relacionales y almacenes de documentos que con Mongo en sí:

* El modelado de documentos se ajusta muy bien a ciertos casos de uso. Todavía estoy explorando algunos en particular, pero tener comentarios incrustados en algún tipo de modelo de dominio es espectacular.
* El modelado de documentos puede reducir drásticamente sus consultas por página. Tengo una aplicación que solo necesita dos consultas en la mayoría de las páginas, debido a la ‘desnormalización’.
* Debido a la naturaleza sin esquema de los almacenes de documentos, es mucho más rápido comenzar a trabajar y cambiar la forma en que almacena sus datos.

También hay algunos inconvenientes:

* Ni siquiera te molestes en usar 32 bits. Tiene un límite de tamaño de base de datos 2G allí.
* Es rápido porque, de forma predeterminada, solo imprime en el disco una vez por segundo, por lo que teóricamente podría perder datos.
* También es rápido porque con ciertas configuraciones en realidad regresa antes de saber si la escritura falla o no, esto puede o no ser lo que desea.

En pocas palabras: conozca sus herramientas. usa el mejor.

Para agregar a la respuesta de Steve, otro beneficio importante de usar bases de datos NoSQL es la flexibilidad del modelo de datos que permiten. Con las bases de datos relacionales hay reglas más estrictas sobre cómo debe almacenar los datos. Sin embargo, con esta flexibilidad viene un mayor riesgo de perder la integridad de los datos. En las bases de datos relacionales, puede realizar verificaciones automáticas de integridad de datos con claves foráneas y disparadores. Con las bases de datos NoSQLl, debe realizar la mayoría de las comprobaciones de integridad en la capa de aplicación.