Añadir N elementos a un array en MongoDB

21/Ene/2016 MongoDB , Deja un comentario

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.

Vídeos sobre MongoDB


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.