MongoDB es un sistema de base de datos multiplataforma orientado a documentos, se pueden almacenar cualquier tipo de contenido sin obedecer a un modelo o esquema. Está escrito en C++ con lo que es bastante rápido a la hora de ejecutar sus tareas. Además, está licenciado como GNU AGPL 3.0, de modo que se trata de un software de licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y Solaris.
Una de sus características principales es la velocidad y la sencilla forma que tiene para hacer consultas a los contenidos. Además:
- Se utiliza para cualquier aplicación que necesite almacenar datos semiestructurados, caso de aplicaciones CMS, aplicaciones móviles, de juegos, o plataformas e-commerce.
- No soporta JOINS ni transacciones, aunque posee índices secundarios, un propio lenguaje de consulta muy expresivo, operaciones atómicas en un solo documento (pero no soporta transacciones de múltiples documentos) y lecturas consistentes.
La mayor diferencia entre las bases de datos relacionales y MongoDB es la forma en que se crea el modelo de datos, el modelo relacional es un modelo rígido y estructurado mientras que el modelo MongoDB es un modelo dinámico.
Con el modelo MongoDB se pasa de un modelo de datos rígido basado en estructuras de datos bidimensionales, formado por tablas, filas y columnas a un modelo de datos de documentos rico y dinámico con subdocumentos y matrices embebidas.
En MongoDB se pueden crear colecciones sin definir su estructura, también se puede alterar la estructura de los documentos simplemente añadiendo nuevos campos o borrando los ya existentes. Esta característica convierte a Mongo en una BD muy flexible con respecto a las alterativas relacionales.
MongoDB almacena documentos JSON (JavaScript Object Notation) en una representación binaria llamada BSON (Binary JSON). BSON es una serialización codificada en binario de documentos JSON.
Soporta todas las características de JSON e incluye los tipos de datos int. long, float o arrays. El documento (el registro en el modelo relacional) representa la unidad básica de datos en MongoDB.