MongoDB
La base de datos documental para esquemas flexibles y evolutivos.
MongoDB es una base de datos NoSQL orientada a documentos que almacena datos como BSON (JSON binario). Es la elección por defecto para aplicaciones con esquemas que evolucionan rápido, datos profundamente anidados y altos volúmenes de escritura — donde el DDL SQL rígido frenaría el desarrollo.
Desplegar con Pier
- 1 Abre el panel de Pier y haz clic en Add service.
- 2 Elige MongoDB en la lista de plantillas.
- 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
- 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.
¿Qué es MongoDB?
MongoDB es la base de datos documental NoSQL más desplegada. En lugar de tablas y filas, almacena documentos BSON — objetos anidados muy parecidos a JSON — agrupados en colecciones. Los esquemas son opcionales; las consultas usan una sintaxis JSON-like rica que se mapea naturalmente a JavaScript y otros lenguajes dinámicos.
El trade-off vs SQL es real: renuncias a la integridad de foreign keys cross-collection y a la conformidad ANSI con SQL estándar. A cambio obtienes flexibilidad de schema-on-read, atomicidad profunda de documentos y un lenguaje de consulta que encaja con la forma de los datos modernos mejor que las filas relacionales rígidas.
Cómo lo despliega Pier
Pier usa la imagen Docker oficial mongo, montando /data/db como volumen
persistente. La versión por defecto es latest (MongoDB 8.x); 7 y 6 están
disponibles para fijar versión estrictamente. Las credenciales root se
autogeneran vía MONGO_INITDB_ROOT_USERNAME + MONGO_INITDB_ROOT_PASSWORD.
Solo un nodo en esta plantilla — los replica sets multi-nodo requieren
inicialización manual y aún no se soportan vía el modo clúster de Pier. Los
backups usan mongodump --archive --gzip en horario y pueden subirse a S3.
Cuándo NO usar MongoDB
Para cargas con necesidades rígidas de integridad relacional (ledgers financieros, inventario con foreign keys estrictas) — elige Postgres. Para búsqueda full-text — Elasticsearch. Para embebido mono-proceso — SQLite. Mongo brilla cuando tus datos tienen estructura anidada que cambia de forma a menudo y quieres ergonomía JSON-nativa.
Características clave
Flexibilidad de esquema
Cada documento en una colección puede tener su propia forma. Añade campos sin ALTER TABLE; elimínalos sin migraciones. Las reglas de validación se pueden imponer cuando se necesite.
Pipeline de agregación potente
$match, $group, $lookup (join), $facet, $bucket, $unwind, $graphLookup — el framework de agregación de MongoDB rivaliza con SQL para consultas analíticas sobre datos documentales.
Escalado horizontal nativo
El sharding por clave hashed o por rango divide colecciones entre nodos. Los replica sets dan failover automático, escalado de lecturas y mantenimiento sin downtime.
Índices geoespaciales
Índices 2dsphere para puntos GeoJSON, polígonos, multipolígonos. Consultas $near, $geoWithin, $geoIntersects con precisión de kilómetros.
Change streams (CDC)
Suscríbete a inserts/updates/deletes en tiempo real vía change streams. Construye UIs reactivos, sincroniza con otros sistemas, alimenta workflows event-driven.
Time series collections (5.0+)
Colecciones dedicadas de series temporales con almacenamiento columnar y bucketing automático — diseñadas para IoT y cargas de métricas.
Casos de uso
Plataformas de contenido generado por usuarios
Posts de redes sociales, comentarios, reacciones — los campos flexibles por documento encajan naturalmente en BSON.
Ingesta IoT en tiempo real
Alto throughput de escritura, time series collections y change streams hacen de Mongo un backend IoT viable.
Catálogo de productos con atributos variables
Catálogos e-commerce con atributos distintos por categoría (TVs tienen tamaño de pantalla; libros tienen ISBN) — sin necesidad de columnas SQL sparse ni EAV.
Backend de sincronización para apps móviles
Mongo Realm + Atlas Device Sync. Para self-hosted, empareja con capas de sincronización estilo WatermelonDB o PouchDB.
Vista única / perfiles de cliente 360
Agrega datos de muchos sistemas en un documento desnormalizado por cliente. Updates atómicos en campos anidados.
Ejemplos de código
db.users.insertOne({
email: "[email protected]",
profile: {
name: "Aleksandr",
locale: "es",
tags: ["beta", "pro"]
},
createdAt: new Date()
}); db.users.aggregate([
{ $unwind: "$profile.tags" },
{ $group: {
_id: { locale: "$profile.locale", tag: "$profile.tags" },
count: { $sum: 1 }
}},
{ $sort: { count: -1 } },
{ $limit: 20 }
]); db.places.createIndex({ location: "2dsphere" });
db.places.find({
location: {
$near: {
$geometry: { type: "Point", coordinates: [37.6173, 55.7558] },
$maxDistance: 5000
}
}
}); const stream = db.orders.watch([
{ $match: { "fullDocument.status": "paid" } }
]);
stream.on("change", (ev) => sendToWarehouse(ev.fullDocument)); Comparativa
| vs PostgreSQL con JSONB | El JSONB de Postgres iguala la flexibilidad de Mongo manteniendo joins, transacciones y SQL. Si necesitas datos relacionales y documentos en un mismo sitio, Postgres suele ganar. Elige Mongo cuando los documentos sean el modelo principal y quieras change streams + sharding nativos. |
| vs CouchDB | CouchDB es master-master con sincronización offline-first — genial para móvil. Mongo gana en potencia de agregación, ecosistema y tooling. |
| vs Elasticsearch | Elastic está diseñado específicamente para búsqueda full-text; Mongo es para almacenamiento documental genérico. A menudo se emparejan — Mongo como fuente de verdad, Elastic como índice de búsqueda. |
| vs DynamoDB | Dynamo es gestionado por AWS y pay-per-request; Mongo es autohospedado con costes predecibles. Mongo tiene agregaciones que Dynamo no tiene. |
Preguntas frecuentes
¿Qué versión de MongoDB despliega Pier?
¿Soporta replicación?
¿La licencia SSPL me afecta?
¿Cómo conecto desde mi app?
¿Autenticación por defecto?
¿Los backups son automáticos?
¿Cuándo añadir índices?
Servicios relacionados
Desplegar en tu VPS
MongoDB es una base de datos NoSQL orientada a documentos que almacena datos como BSON (JSON binario). Es la elección por defecto para aplicaciones con esquemas que evolucionan rápido, datos profundamente anidados y altos volúmenes de escritura — donde el DDL SQL rígido frenaría el desarrollo.
Desplegar este servicio →