Invierte en tu educación con el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12d

02h

07m

39s

1

Update en MongoDB

En MongoDB podemos actualizar documentos a través de dos métodos los cuales son update() y save().

El método update() lo que hace es desplazar los valores en un documento existente, mientras que save() reemplaza el documento existente con el que le pasamos por parámetro. Veamos cómo hacerlo.

Para nuestros ejemplos utilizaremos una collection la cual llamaremos libros, en este documento tenemos el nombre del libro, el autor, número (que refiere a la existencia de libros en nuestra biblioteca), unidad(puede ser cientos, miles, millones, etc), idioma y primera edición. Cabe resaltar que estos datos no son reales.

db.libros.find().pretty()
{
"_id" : ObjectId(“5920adccfae8f956c5f057f2”),
“nombre” : “El Hobbit”,
“autor” : “J.R.R Tolkien”,
“numero” : 100,
“unidad” : “millones”,
“idioma” : “ingles”,
“primera_edicion” : 1937
}
{
"_id" : ObjectId(“5920ae44fae8f956c5f057f3”),
“nombre” : “El Señor de los Anillo”,
“autor” : “J.R.R Tolkien”,
“numero” : 150,
“unidad” : “millones”,
“idioma” : “ingles”,
“primera_edicion” : 1954
}
{
"_id" : ObjectId(“5920aeb2fae8f956c5f057f4”),
“nombre” : “El Principito”,
“autor” : “Antonie de Saint-Exepéry”,
“numero” : 140,
“unidad” : “millones”,
“idioma” : “Frances”,
“primera_edicion” : 1943
}
{
"_id" : ObjectId(“5920af19fae8f956c5f057f5”),
“nombre” : “Historias de dos Ciudades”,
“autor” : “Charles Dicken”,
“numero” : 200,
“unidad” : “millones”,
“idioma” : “ingles”,
“primera_edicion” : 1859
}

Empezaremos utilizando el método save().

Creamos una variable y le asignamos como valor una consulta.

cambio = db.libros.findOne({ nombre:“El Principito”})
{
"_id" : ObjectId(“5920aeb2fae8f956c5f057f4”),
“nombre” : “El Principito”,
“autor” : “Antonie de Saint-Exepéry”,
“numero” : 140,
“unidad” : “millones”,
“idioma” : “Frances”,
“primera_edicion” : 1943
}

Como podemos ver en el ejemplo anterior tenemos una condición la cual trae el nombre del libro. Si ejecutamos la variable cambio nos devuelve los datos del documento que cumple con la condición - nombre: “El Principito” -.

Teniendo en cuenta que uno de sus campos se llama numero sobre el cual vamos a realizar la actualización escribimos

cambio.numero = 145

Si volvemos a ejecutar la variable cambio veremos el cambio en el campo numero, pero, no así en la colección de nuestra base de datos. Para guardar nuestro cambio nos ayudará el método save() de la siguiente manera:

db.libros.save(cambio)
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 }) // MongoDB informa una modificación

Cuando ejecutemos nuevamente la consulta db.libros.find(), el registro que habíamos llamado con la condición nombre: “El principito” su campo numero habrá cambiado de 140 a 145

Utilizando el método update()

Creamos una variable y le asignamos como valor una consulta.

cambio = db.libros.findOne({ nombre:“El Principito”})
{
"_id" : ObjectId(“5920aeb2fae8f956c5f057f4”),
“nombre” : “El Principito”,
“autor” : “Antonie de Saint-Exepéry”,
“numero” : 145,
“unidad” : “millones”,
“idioma” : “Frances”,
“primera_edicion” : 1943
}

De la misma manera que con el método save(), esta variable contiene el documento cuya condición es que el campo nombre tenga el valor “El Principito”, ahora actualizaremos el campo numero a 140 de la siguiente forma:

cambio.numero = 140

Si ejecutamos la variable cambio veremos el cambio, pero, aún no la hemos llevado a la colección, para eso utilizaremos el método update().

db.libros.update({numero:145}, cambio)
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 }) // MongoDB informa una modificación

El método update recibe el campo que se quiere actualizar con su contenido o valor actual, luego la variable, para nuestro ejemplo la variable cambio que contiene la actualización.

Cuando ejecutemos nuevamente la consulta db.libros.find(), el registro que habíamos llamado con la condición nombre: “El principito” su campo numero habrá cambiado de 145 a 140

Para nuestro tercer ejemplo utilizaremos el comando $set, actualizaremos el campo unidad de todas los documentos que existen en nuestra colección, veamos cómo hacerlo

db.libros.update({unidad: “millones”}, {$set:{unidad: “miles”} }, {multi: true})
WriteResult({ “nMatched” : 9, “nUpserted” : 0, “nModified” : 9 }) // MongoDB informa nueve modificaciones

Nuestro ejemplo utiliza nuevamente el método update(), sin embargo usa tres parámetros, el primer parámetro sirve como condición, el siguiente es el o los nuevos valores y por último le decimos que a todos los documentos especificando la palabra multi con su valor true, de lo contrario solo actualizará el primer documento que encuentre.

espero haber sido claro hasta la próxima.

Escribe tu comentario
+ 2