¿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
}
);