Documentos anidados en Mongoose: Modelando relaciones en MongoDB

Documentos anidados en Mongoose: Modelando relaciones en MongoDB

¿Cómo anidar documentos en Mongoose?

El modelo de almacenamiento NoSQL permite almacenar documentos anidados de forma muy sencilla. Por ejemplo, en lugar de tener dos colecciones como publicaciones y autores, podemos tener una sola colección autores, y dentro de cada uno de estos las publicaciones asociadas a este autor.

La decisión de si separar colecciones o anidarlas es mas bien basada en la arquitectura, y depende del uso.

Ejemplo del uso de documentos anidados en Mongoose

const publicacionSchema = new mongoose.Schema({
    titulo: String,
    genero: String,
});
const autorSchema = new mongoose.Schema({
    nombre: String,
    publicaciones: [publicacionSchema],
});
const author = new mongoose.model("Autor", autorSchema);

Para crear un nuevo autor o para guardar una publicación de dicho autor cuando se trabaja con documentos anidados, se utilizan las publicaciones como un arreglo y se usa el método push de Javascript o el operador $push de MongoDB.

Supongamos que deseamos agregar un nuevo post a nuestro autor creado en el bloque anterior.

author.update(
    { _id: autorId },
    { $push: { publicaciones: nuevaPublicacion } },
    (err, res) => {
        // verificar si hay error
        // manejar la respuesta
    }
);