Definição
$incThe
$incoperator increments a field by a specified value.
Compatibilidade
Você pode utilizar o $inc para implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
The $inc operator has the following form:
{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
Para especificar um <field> em um documento incorporado ou em uma array, use a notação de ponto.
Comportamento
A partir do MongoDB 5.0, os operadores de atualização processam campos de documento com nomes baseados em cadeia de caracteres em ordem lexicográfica. Os campos com nomes numéricos são processados em ordem numérica. Consulte Atualizar Comportamento de Operadores para detalhes.
The $inc operator accepts positive and negative values.
If the field does not exist, $inc creates the field and sets the field to the specified value.
Using the $inc operator on a field with a null value generates an error.
$inc é uma operação atômica dentro de um único documento.
Starting in MongoDB 5.0, mongod no longer raises an error when you use an update operator like $inc with an empty operand expression ( { } ). An empty update results in no changes and no oplog entry is created (meaning that the operation is a no-op).
Exemplo
Crie a coleção products:
db.products.insertOne( { _id: 1, sku: "abc123", quantity: 10, metrics: { orders: 2, ratings: 3.5 } } )
The following updateOne() operation uses the $inc operator to:
aumentar o campo
"metrics.orders"em 1aumentar o campo
quantityem -2 (que diminuiquantity)
db.products.updateOne( { sku: "abc123" }, { $inc: { quantity: -2, "metrics.orders": 1 } } )
A operação retorna o seguinte resultado:
{ _id: 1, sku: 'abc123', quantity: 8, metrics: { orders: 3, ratings: 3.5 } }