🥇 Documentos anidados en Mongoose.

El modelo de almacenamiento NoSQL permite almacenar documentos anidados de forma muy sencilla. Por ejemplo, en lugar de tener dos coulecciones 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.

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
    }
);
Campos virtuales en Mongoose. Relaciones y uniones en Mongoose.
comments powered by Disqus