MongoDB tem um
$inc
operador de atualização de campo que permite incrementar um valor por um valor específico. Você pode usar valores positivos e negativos (ou seja, para aumentar ou diminuir o valor).
Se o campo ainda não existir, ele será criado com o valor especificado.
Exemplo
Suponha que tenhamos uma coleção chamada
dogs
com o seguinte documento:{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Aqui, o
weight
O campo contém um valor que pode ser incrementado ou decrementado. Incremento
Podemos usar o
$inc
operador em conjunto com o update()
método para aumentar o peso deste cão. Assim:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Saída:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Isso nos diz que um documento foi correspondido e modificado.
Vamos verificar a coleção novamente:
db.dogs.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Podemos ver que o peso do cão aumentou em 5.
Diminuir
Você pode diminuir o valor fornecendo um valor negativo ao
$inc
operador. Assim:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Saída:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Confira a coleção:
db.dogs.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Podemos ver que o peso agora foi decrementado em 5.
Incrementar um campo que não existe
Quando você incrementa um campo que não existe no documento, o campo é adicionado e atribuído ao valor especificado.
Exemplo:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Saída:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Observe que atualizamos dois campos; o
weight
campo e a height
campo (que não existia originalmente). Vamos verificar o documento novamente:
db.dogs.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Podemos ver que o
weight
campo foi incrementado em 1
, e uma nova height
campo foi adicionado com o valor especificado de 30
.