Entrada
MongoDB

Qué son y como usar documentos embebidos en MongoDB

MongoDB: Qué son y como usar documentos embebidos en MongoDB

Los documentos embebidos en MongoDB corresponden a una forma de modelar datos donde información relacionada se almacena dentro de un mismo documento, en lugar de distribuirse en múltiples colecciones.

1. ¿Qué es un documento embebido?

Un documento embebido es un documento incrustado en otro. Esto es posible gracias a las características de sus propiedades en forma de lista, ya que una propiedad puede ser al mismo tiempo otra lista de propiedades.

Ejemplo básico

1
2
3
4
5
6
7
8
9
{
  "nombre": "Marco",
  "edad": 35,
  "direccion": {
    "calle": "Av. Costanera",
    "ciudad": "La Serena",
    "region": "Coquimbo"
  }
}

En este caso, dirección es un documento embebido dentro del documento principal.

Documento embebido

1.1 Ventajas de los documentos embebidos

  • Mejor rendimiento: Toda información se encuentra en un solo documento, lo que reduce la necesidad de múltiples consultas.
  • Acceso más rápido a los datos: No es necesario realizar joins como en las bases de datos relacionales.
  • Modelo de dato más natural: Se asemeja a estructuras utilizadas en programación orientada a objetos.

1.2 Consideraciones importantes

  • Límite de tamaño: Cada documento en MongoDB tiene un límite de 16 MB.
  • Duplicación de datos: Puede existir redundancia si la información se repite en múltiples documentos.
  • Complejidad en actualizaciones: Modificar estructuras anidadas puede requerir operaciones más específicas.

2. Casos de uso

En el modelado de datos en MongoDB, es importante identificar el tipo de relación entre entidades para decidir si usar documentos embebidos o referencias.

2.1 Relación Uno a Uno (1:1)

Una relación uno a uno ocurre cuando un documento está asociado a exactamente otro documento.

Cuándo usarla

  • Cuando los datos siempre se consultan juntos
  • Cuando la información es complementaria
  • Cuando el tamaño del documento no crece demasiado

Ejemplo: Usuario y perfil

1
2
3
4
5
6
7
8
9
{
  "usuario": "mcherrera",
  "email": "contacto@mcherrera.dev",
  "perfil": {
    "telefono": "+56912345678",
    "direccion": "Calle #123, La Serena",
    "fecha_nacimiento": "1990-11-05"
  }
}

En este caso, el perfil está embebido porque pertenece exclusivamente al usuario.

2.2 Relación Uno a Muchos (1:N)

Una relación uno a muchos ocurre cuando un documento está relacionado con múltiples documentos.

Cuándo usarla

  • Cuando una entidad tiene múltiples elementos asociados
  • Cuando los datos se consultan frecuentemente junto al padre
  • Cuando la cantidad de elementos es controlada

Ejemplo embebido: Usuario y mascotas

1
2
3
4
5
6
7
{
  "usuario": "mcherrera",
  "mascotas": [
    { "nombre": "Firulais", "tipo": "Perro" },
    { "nombre": "Michi", "tipo": "Gato" }
  ]
}

Este enfoque es ideal cuando:

  • El número de mascotas es pequeño
  • Siempre se consultan junto al usuario

Ejemplo con referencia

1
2
3
4
5
6
7
8
9
10
11
12
// Usuario
{
  "_id": "507f1f77bcf86cd799439011",
  "usuario": "mcherrera"
}

// Mascotas
{
  "usuario_id": "507f1f77bcf86cd799439011",
  "nombre": "Firulais",
  "tipo": "Perro"
}

Se recomienda este modelo cuando:

  • La cantidad de elementos puede crecer mucho
  • Se requiere consultar las mascotas por separado
  • Se necesitan búsquedas o filtros sobre las mascotas
Esta entrada está licenciada bajo CC BY 4.0 por el autor.