Añadir un valor a un array en MongoDB

19/Ene/2016 MongoDB , Deja un comentario
Ejemplos Programación MongoDB

Una de las cosas potentes que tiene MongoDB es la capacidad de crear documentos que tengan campos que sean arrays. Cosas que nos permiten representar valores anexos a un documento de una forma sencilla y que sería complejo (o tedioso) en una base de datos relacional. En este caso vamos a ver cómo podemos añadir un valor a un array en MongoDB.

Partimos de un documento que no tiene ningún campo que sea un array. Dicho documento representa información sobre una ciudad.

{
  "_id": ObjectId("525ab02733b01a66a9dcbc5f"),
  "ciudad": "Zaragoza",
  "habitantes": 679624
}

Ahora vamos a crear un array en el que insertemos información de monumentos que se puedan visitar en dicha ciudad.

El primer paso será conectarnos a la base de datos cuyo nombre es «demografía».

conn = new Mongo();
db = conn.getDB("demografia");

Ahora vamos a ayudarnos en el operador $push. La estructura del operador $push es la siguiente.

{$push:{campo:elemento_insertar}}

Si el campo no existe se crea un campo de formato array, en el caso de que campo exista y no sea un array se generaría un error.

De esta forma utilizaremos el método .update para poder añadir un valor a un array en MongoDB.

update = db.ciudades.update({ciudad:"Zaragoza"},{$push:{monumentos:"Basílica del Pilar"}})

Podremos comprobar si se ha actualizado el documento revisando el campo «nMatched» devuelto en la respuesta.

print('Documentos actualizados ' + update["nMatched"]);

Una vez ejecutado tendremos el siguiente documento.

{
	"_id" : ObjectId("525ab02733b01a66a9dcbc5f"),
	"ciudad" : "Zaragoza",
	"habitantes" : 679624,
	"monumentos" : [
		"Basílica del Pilar"
	]
}

De esta manera ya hemos conseguido añadir un valor 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.