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.

  1. {
  2. "_id" : ObjectId("525ab02733b01a66a9dcbc5f"),
  3. "ciudad" : "Zaragoza",
  4. "habitantes" : 679624,
  5. "monumentos" : [
  6. "Basílica del Pilar"
  7. ]
  8. }

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.

  1. {$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:

  1. {$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:

  1. db.ciudades.update(
  2. {ciudad:"Zaragoza"},
  3. {$push:{monumentos:
  4. {$each:["SEO",
  5. "Palacio Aljafería",
  6. "Murallas Romanas"]
  7. }
  8. }
  9. })

Y al ejecutarlo el documento resultante será:

  1. {
  2. "_id" : ObjectId("525ab02733b01a66a9dcbc5f"),
  3. "ciudad" : "Zaragoza",
  4. "habitantes" : 679624,
  5. "monumentos" : [
  6. "Basílica del Pilar",
  7. "SEO",
  8. "Palacio Aljafería",
  9. "Murallas Romanas"
  10. ]
  11. }

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

*

*