Qué es MongoDB y para qué sirve

MongoDB es una base de datos NoSQL que guarda los datos como documentos parecidos a JSON, agrupados en colecciones, sin exigir un esquema fijo. Sirve para datos que cambian de forma, como perfiles, catálogos y eventos.

Actualizado el 4 min de lectura

Objetivos de aprendizaje

Después de leer este artículo podrás:

  • Entender el modelo de documentos y colecciones de MongoDB
  • Insertar y buscar documentos con el driver oficial de Node.js
  • Saber cuándo MongoDB es buena opción y cuándo conviene otra base de datos
En esta página

MongoDB aparece a menudo en proyectos de bots, APIs y aplicaciones web. En lugar de tablas rígidas, guarda cada registro como un documento: una estructura de campos y valores parecida a un objeto JSON. Eso encaja con lenguajes como JavaScript y Python, donde los datos ya circulan como objetos.

Si todavía estás comparando opciones, qué base de datos elegir pone a MongoDB frente a las alternativas.

Tablacolumnas fijasidnombreemailColeccióncampos distintos{ }{ }{ }{_id: ObjectId(…),_id úniconombre: "Alice",campo: valordireccion: { ciudad, pais },objeto anidadointereses: ["lectura", …]lista (array)}
En la tabla cada fila tiene las mismas columnas; en la colección cada documento lleva sus propios campos, objetos y listas.

¿Qué es una base de datos orientada a documentos?#

En una base de datos relacional defines tablas con columnas fijas y todos los registros siguen la misma forma. En una orientada a documentos, cada registro es un documento, y los documentos de una misma colección pueden tener campos distintos.

Un documento de MongoDB se ve así:

javascript
{
  _id: ObjectId("507f1f77bcf86cd799439011"),
  nombre: "Alice",
  nacimiento: ISODate("1990-01-01T00:00:00Z"),
  direccion: { ciudad: "Madrid", pais: "ES" },
  intereses: ["lectura", "senderismo", "código"]
}

Los valores pueden ser textos, números, fechas, otros documentos (como direccion) o listas (como intereses). Guardar la dirección dentro del documento de la persona evita un join: una sola lectura trae todo.

¿Cómo organiza MongoDB los datos?#

Cuatro conceptos cubren casi todo:

  • Documento: un registro, formado por pares de campo y valor. Todo documento tiene un _id único, que MongoDB crea si no lo indicas.
  • Colección: un grupo de documentos, equivalente a una tabla pero sin esquema obligatorio.
  • Base de datos (database): un conjunto de colecciones.
  • BSON: el formato binario en que MongoDB almacena los documentos. Extiende JSON con tipos como ObjectId, fechas y datos binarios.

Si quieres imponer reglas (campos obligatorios, tipos), puedes añadir validación de esquema a la colección. La flexibilidad es una opción, no una obligación.

¿Cómo funciona MongoDB por dentro?#

Tres funciones definen la arquitectura, según el manual oficial:

  • Replicación con failover automático: los datos se copian entre varios servidores (un conjunto de réplicas). Si el primario cae, los demás eligen uno nuevo.
  • Sharding: repartir los datos entre máquinas según una clave, para escalar en horizontal cuando un servidor no basta.
  • Transacciones ACID: operaciones sobre varios documentos que se aplican completas o no se aplican, incluso en clústeres con sharding.

En la práctica, un proyecto pequeño corre en un solo servidor. La replicación y el sharding llegan cuando crecen el volumen de datos o la exigencia de disponibilidad.

¿Cómo usar MongoDB con Node.js?#

Instala el driver oficial y guarda la cadena de conexión en una variable de entorno, nunca en el código:

bash
npm install mongodb
javascript
const { MongoClient } = require("mongodb");

const client = new MongoClient(process.env.MONGODB_URI);

async function main() {
  try {
    await client.connect();
    const usuarios = client.db("app").collection("usuarios");

    const { insertedId } = await usuarios.insertOne({ nombre: "Ada", rol: "ingeniera" });
    console.log("Insertado:", insertedId);

    const encontrados = await usuarios.find({ rol: "ingeniera" }).toArray();
    console.log("Encontrados:", encontrados);
  } finally {
    await client.close();
  }
}

main().catch(console.error);

La colección usuarios no necesita existir antes: MongoDB la crea en la primera inserción. Para consultas rápidas sobre campos que filtras a menudo, crea un índice con createIndex. Sin índice, la base de datos recorre toda la colección en cada búsqueda.

¿Para qué sirve MongoDB?#

MongoDB funciona bien cuando los datos tienen forma variable o se leen en bloque:

  • Perfiles y ajustes de usuarios: cada usuario puede tener campos distintos.
  • Bots: configuración por servidor, preferencias y economías virtuales, donde cada registro es un objeto.
  • Catálogos de productos: artículos con atributos distintos por categoría.
  • Eventos y logs: muchos registros de forma parecida pero cambiante.
  • Prototipado rápido: el esquema cambia sin migraciones.

¿Cuándo no usar MongoDB?#

Evítalo o piénsalo dos veces en estos casos:

  • Datos muy relacionados: si haces joins constantes entre varias entidades, una base relacional como PostgreSQL suele ser más natural.
  • Documentos muy grandes: el límite es de 16 MiB por documento y el anidamiento llega hasta 100 niveles. Los archivos grandes van en un almacenamiento de objetos, con la URL guardada en el documento.
  • Transacciones largas: el límite por defecto es de 60 segundos por transacción.
  • Caché de acceso ultrarrápido: un almacén en memoria como Redis encaja mejor.

La flexibilidad también tiene un costo: sin esquema, un error de tipeo en el nombre de un campo pasa desapercibido. Define convenciones de nombres y activa la validación si la necesitas.

¿Qué términos aparecen junto a MongoDB?#

  • NoSQL: nombre genérico para bases de datos que no usan tablas relacionales.
  • Atlas: el servicio en la nube de la propia MongoDB, Inc. También puedes alojar MongoDB por tu cuenta o con otros proveedores.
  • Mongoose: biblioteca de Node.js que añade esquemas y modelos sobre el driver.
  • Aggregation pipeline: lenguaje de MongoDB para filtrar, agrupar y transformar datos por etapas.
  • GridFS: función para guardar archivos mayores de 16 MiB dividiéndolos en partes.

Cuando llegue el momento de poner la base en línea, cómo alojar una base de datos te muestra el camino.

Cómo hacerlo en Square Cloud#

En Square Cloud, el alojamiento de MongoDB empieza en el plan Standard; Hobby no incluye bases de datos. Creas la base en el panel, siempre en una versión reciente, y queda lista en segundos. Corre en el mismo datacenter que tus aplicaciones, con una latencia media de alrededor de 1 ms, como nodo único (standalone, sin replica set) y con TLS obligatorio.

Para conectar tu aplicación, copia la URL de conexión completa que te entrega el panel, guárdala como variable de entorno (la MONGODB_URI del ejemplo anterior) y reinicia la aplicación. Descarga también el certificado: el cliente tiene que confiar en la CA y presentar el .pem.

Puedes tomar snapshots manuales cuando quieras, y todo plan que incluye bases de datos tiene también un snapshot automático diario. Puedes restaurar un snapshot en la misma base, en otra del mismo motor o en una base nueva, o descargarlo como .zip.

Mira los detalles y los planes en Alojamiento de MongoDB.

Hosting de bases de datos

MongoDB, PostgreSQL, MySQL y Redis junto a tu app

Más información

Preguntas frecuentes

¿MongoDB es SQL o NoSQL?

Es NoSQL, de tipo orientado a documentos. En lugar de tablas con filas y columnas, guarda documentos en colecciones, y las consultas usan la API y el lenguaje de agregación propios de MongoDB, no SQL.

¿MongoDB tiene transacciones?

Sí. Ofrece transacciones ACID con varios documentos, incluso en clústeres con sharding. Por defecto, una transacción puede durar como máximo 60 segundos.

¿Cuál es el tamaño máximo de un documento en MongoDB?

16 MiB por documento BSON. Para archivos más grandes, la documentación indica GridFS, o puedes guardar el archivo en un almacenamiento de objetos y dejar solo la URL en el documento.

¿MongoDB es mejor que PostgreSQL?

Ninguno gana en todo. MongoDB encaja con datos de forma variable que se leen un documento completo a la vez. PostgreSQL encaja con datos muy relacionados y consultas con muchos joins.

Siguiente artículo¿Cuánto cuesta hospedar PostgreSQL?Hospedar PostgreSQL cuesta de cero a cientos de dólares al mes. Mira qué define el precio (RAM, disco, réplicas, tráfico), modelos de cobro y cómo estimar el tuyo.

Más en Bases de datos

Ver los 24 artículos