sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $ incluido

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 .