Si ya has leído nuestro ejemplo sobre cómo añadir un valor a un array en MongoDB y lo has probado, habrás visto que tendríamos que insertar de elemento en elemento, ejecutando cada vez la operación update. En este ejemplo vamos a ver cómo podemos añadir N elementos a un array en MongoDB.
Volvemos a partir de nuestro documento que representa una ciudad.
{
"_id" : ObjectId("525ab02733b01a66a9dcbc5f"),
"ciudad" : "Zaragoza",
"habitantes" : 679624,
"monumentos" : [
"Basílica del Pilar"
]
}
Lo que buscamos es añadir N elementos a un array en MongoDB pero de una sola vez. En este caso vamos a añadir más monumentos a la ciudad de «Zaragoza».
Para hacer la inserción sobre el array seguiremos utilizando el operador $push
.
{$push:{campo:elemento}}
Pero vamos a necesitar de otro operador, en este caso de $each
para poder especificar una lista de elementos. De esta forma la estructura de inserción se quedará de la siguiente forma:
{$push:{campo:{$each:[elemento1,elemento2,...,elementoN}}}
La actualización del documento la realizamos con el método .update
y nos quedará de la siguiente forma:
db.ciudades.update(
{ciudad:"Zaragoza"},
{$push:{monumentos:
{$each:["SEO",
"Palacio Aljafería",
"Murallas Romanas"]
}
}
})
Y al ejecutarlo el documento resultante será:
{
"_id" : ObjectId("525ab02733b01a66a9dcbc5f"),
"ciudad" : "Zaragoza",
"habitantes" : 679624,
"monumentos" : [
"Basílica del Pilar",
"SEO",
"Palacio Aljafería",
"Murallas Romanas"
]
}
Vemos que lo que hace es añadir los elementos dentro del array conservando el elemento existente.
Así ya hemos visto como manejar los operadores $push
y $each
para poder añadir N elementos a un array en MongoDB.