Relación uno a muchos en MongoDb


Aprende de las relaciones uno a muchos en mongodb, aprende de documentos embebidos y referenciados

Relación uno a muchos en MongoDb
oscar Escrito por oscar 04 August 2026 5 0

En MongoDB, una relación uno a muchos (1:N) significa que un documento principal puede estar relacionado con varios documentos secundarios. Es uno de los tipos de relación más comunes en bases de datos.

¿Qué es una relación uno a muchos?

Una relación uno a muchos ocurre cuando un registro puede tener múltiples registros asociados.

Ejemplo:

Representación conceptual:

Relaciones uno a muchos
Relaciones uno a muchos

¿Cómo se maneja en MongoDB?

MongoDB no utiliza claves foráneas como MySQL o PostgreSQL. En su lugar, existen dos estrategias principales:

Opción 1: Documentos embebidos

Consiste en almacenar los documentos hijos dentro del documento padre.

Supongamos un cliente con varios teléfonos.

Ejemplo

{
    "_id": ObjectId("1"),
    "nombre": "Oscar Fernandez",
    "correo": "oscar@email.com",
    "telefonos": [
        {
            "numero": "3001234567",
            "tipo": "Movil"
        },
        {
            "numero": "6015551234",
            "tipo": "Casa"
        }
    ]
}

Aquí existe una relación uno a muchos:

Los teléfonos están almacenados dentro del mismo documento.

Ventajas

Desventajas

Opción 2: Referencias

Consiste en almacenar los documentos en colecciones separadas y relacionarlos mediante identificadores.

Colección clientes

{
    "_id": ObjectId("100"),
    "nombre": "Oscar Fernandez",
    "correo": "oscar@email.com"
}

Colección pedidos

{
    "_id": ObjectId("500"),
    "clienteId": ObjectId("100"),
    "producto": "Laptop",
    "cantidad": 1
}
{
    "_id": ObjectId("501"),
    "clienteId": ObjectId("100"),
    "producto": "Mouse",
    "cantidad": 2
}

La relación se establece mediante el campo clienteId.

Visualmente:

Cliente 100
    |
    +-- Pedido 500
    |
    +-- Pedido 501

Ventajas

Desventajas

Consultar la relación con $lookup

MongoDB ofrece el operador $lookup, similar a un JOIN de SQL.

db.clientes.aggregate([
    {
        $lookup: {
            from: "pedidos",
            localField: "_id",
            foreignField: "clienteId",
            as: "pedidos"
        }
    }
]);

Resultado:

{
    "_id": ObjectId("100"),
    "nombre": "Oscar Fernandez",
    "correo": "oscar@email.com",
    "pedidos": [
        {
            "_id": ObjectId("500"),
            "producto": "Laptop",
            "cantidad": 1
        },
        {
            "_id": ObjectId("501"),
            "producto": "Mouse",
            "cantidad": 2
        }
    ]
}

¿Cuándo usar documentos embebidos y cuándo referencias?

Usar documentos embebidos cuando

Ejemplos:

Usar referencias cuando

Ejemplos:

Comparación con SQL

Si vienes de MySQL o PostgreSQL, piensa en la siguiente equivalencia:

SQL

CREATE TABLE clientes (
    id INT PRIMARY KEY,
    nombre VARCHAR(100)
);

CREATE TABLE pedidos (
    id INT PRIMARY KEY,
    cliente_id INT,
    FOREIGN KEY(cliente_id) REFERENCES clientes(id)
);

MongoDB

clientes
{
    "_id": ObjectId("100"),
    "nombre": "Oscar Fernandez"
}

pedidos
{
    "_id": ObjectId("500"),
    "clienteId": ObjectId("100")
}

La diferencia principal es que MongoDB no obliga la integridad referencial. Eres tú quien debe garantizar que el clienteId realmente exista.

Regla práctica para principiantes

Cuando estés diseñando una base de datos MongoDB, hazte esta pregunta:

¿Los datos hijos siempre se consultan junto con el padre y son pocos?

Si la respuesta es sí, utiliza documentos embebidos.

¿Los datos hijos pueden crecer mucho o consultarse por separado?

Si la respuesta es sí, utiliza referencias.

Por ejemplo, en un sistema ERP:

Esta forma de pensar es fundamental en MongoDB porque el modelado de datos suele ser más importante que en bases de datos relacionales tradicionales.


Comentario

Debe aceptar antes de enviar