~/VibeHandbook
PDF gratis

Bases de datos

mongodb.com

MongoDB

Qué es

Piensa en una carpeta de fichas donde cada ficha puede llevar campos distintos, en lugar de una hoja de cálculo fija donde cada fila debe tener las mismas columnas. MongoDB funciona como esa carpeta de fichas. Es una de documentos que almacena datos como documentos flexibles (piensa en cada "documento" como una ficha) agrupados en colecciones. Los documentos se guardan en un formato llamado BSON, que es la forma binaria de (JavaScript Object Notation) de MongoDB, una manera común de escribir datos como campos con nombre. En lugar de tablas y filas rígidas, cada documento puede tener su propia forma, lo que facilita evolucionar un modelo rápidamente. Es una opción popular para aplicaciones cuyos datos se corresponden de forma natural con objetos anidados.

Fortalezas

  • Esquema flexible: los documentos pueden variar y evolucionar sin migraciones.
  • Los datos se corresponden directamente con los objetos de la aplicación, reduciendo el código de traducción.
  • Lenguaje de consulta rico más un potente pipeline de agregación.
  • Escalado horizontal mediante sharding integrado.
  • Buen soporte para campos anidados y de tipo array.

Contrapartidas

  • Es fácil crear datos inconsistentes sin un diseño de esquema disciplinado.
  • Existen transacciones multi-documento, pero son más pesadas que en los almacenes relacionales.
  • Los joins ($lookup) son limitados en comparación con (Structured Query Language); los datos suelen desnormalizarse.
  • La desnormalización (guardar copias del mismo dato en más de un lugar para evitar búsquedas) puede duplicar datos y complicar las actualizaciones.

Cuándo usarlo

Elige MongoDB para gestión de contenido, catálogos, perfiles de usuario, registro de eventos, y aplicaciones con datos evolutivos o jerárquicos donde los documentos encajan mejor que las tablas normalizadas.

Encaje con vibe coding

Al dirigir a la IA, no dejes que "sin esquema" signifique "sin plan". Pídele a la IA que defina una forma clara de documento y que la aplique con validación por JSON Schema o un ODM (Object-Document Mapper) como Mongoose, incluyendo campos y tipos obligatorios. Dile si debe incrustar los datos relacionados o referenciarlos por id según los patrones de acceso, y que añada índices para los campos que consultas y ordenas. Un buen consejo: haz que la IA use objetos de consulta parametrizados, es decir, que nunca construya consultas pegando texto crudo del usuario. Pídele también que explique su elección entre incrustar y referenciar. Así entenderás los costos de lectura, escritura y actualización.

// Schema validation keeps documents consistent
db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["email", "createdAt"],
      properties: {
        email:     { bsonType: "string" },
        createdAt: { bsonType: "date" },
        roles:     { bsonType: "array", items: { bsonType: "string" } }
      }
    }
  }
});

db.users.createIndex({ email: 1 }, { unique: true });

// Aggregation: count active users per role
db.users.aggregate([
  { $match: { active: true } },
  { $unwind: "$roles" },
  { $group: { _id: "$roles", count: { $sum: 1 } } }
]);