MongoDB tiene un $inc
operador de actualización de campo que le permite incrementar un valor en una cantidad específica.
Puede usar valores positivos y negativos (es decir, para aumentar o disminuir el valor).
Si el campo aún no existe, se crea con el valor especificado.
Ejemplo
Supongamos que tenemos una colección llamada dogs
con el siguiente documento:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Aquí, el weight
El campo contiene un valor que se puede incrementar o disminuir.
Incremento
Podemos usar el $inc
operador junto con update()
método para incrementar el peso de este perro.
Así:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Salida:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Esto nos dice que un documento fue emparejado y modificado.
Revisemos la colección nuevamente:
db.dogs.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Podemos ver que el peso del perro se ha incrementado en 5.
Decremento
Puede disminuir el valor proporcionando un valor negativo a $inc
operador.
Así:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Salida:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Consulta la colección:
db.dogs.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Podemos ver que el peso ahora se ha reducido en 5.
Incrementar un campo que no existe
Cuando incrementa un campo que no existe en el documento, el campo se agrega y se le asigna el valor especificado.
Ejemplo:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Salida:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Observe que actualizamos dos campos; el weight
campo y la height
campo (que originalmente no existía).
Revisemos el documento nuevamente:
db.dogs.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Podemos ver que el weight
el campo se ha incrementado en 1
, y una nueva height
el campo se ha agregado con el valor especificado de 30
.