Vamos a usar la colección de ventas del ejemplo anterior, ventas.json y el mismo proyecto. El objetivo va a ser añadir un nuevo articulo vendido por "Julia Romero". Por lo que vamos a editar el fichero app.js y añadir el siguiente código:
var MongoClient = require('mongodb').MongoClient; //Conexion con MongoDB -> servidor:puerto/nombreBasedeDatos MongoClient.connect('mongodb://localhost:27017/supermercado', function(err,db){ if(err) throw err; //Vamos a buscar a la vendedora Julia Romero var query = {"vendedor" : "Julia Romero"} //Vamos a añadir un nuevo artículo vendido, //Para ello usamos la funcion push para insertar un un item al array artículos. var nuevo_elemento = {$push : {"articulos" : {articulo: "cuaderno hispabigdata", "pvp" : 25 }}}; //Creamos la variable coleccion var coleccion = db.collection('ventas'); //Actualizamos el documento coleccion.update(query, nuevo_elemento, function(err, doc){ if(err) throw err; //Mostramos mensaje indicando que el documento con ID X se ha actualizado console.dir("Coleccion con ID: " + doc + " actualizada correctamente"); //Cerramos la conexión a la base de datos. return db.close(); }); });Como podéis observar en el código hemos cambiado la variable query para que busque a la vendedora indicada y en la variable nuevo elemento hemos añadido el nuevo articulo haciendo uso de la función $push la cual nos permite insertar un elemento nuevo en un array en este caso al array artículos.
A diferencia del ejemplo anterior, no hemos tenido que hacer uso de un cursor, ya que solo nos interesaba actualizar el documento que cumplía con la condición indicada en la variable query.
Si ejecutamos el proyecto
node app.js
Vemos como aparece el mensaje indicando que se ha actualizado correctamente el documento, para comprobarlo vamos a abrir una consola en mongo y vamos a realizar la consulta:
use supermercado; db.ventas.find({_id:1}).pretty()Ahora tenemos añadido el nuevo articulo que queríamos insertar. ¿Que hubiese ocurrido si en la colección tenemos dos vendedores con el mismo nombre? Pues que el articulo se añade a cada documento que encuentre en la colección, por lo que es muy importante asegurarnos de realizar las búsquedas por un campo único.
No hay comentarios:
Publicar un comentario