$inc (Incrementar)
Última atualização: 2026-10-09
$inc (Incrementar)
$inc aumenta (ou diminui) um campo numérico em uma quantidade especificada, criando o campo com o incremento se ele não existir. `{ $inc: { views: 1 } }` adiciona 1 a views; `{ $inc: { stock: -5 } }` subtrai 5. É atômico, ideal para contadores e contagens de visualização, evitando corridas de leitura-modificação-escrita.
| Categoria | Atualização de Campo |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $inc: { <campo>: <quantia> } }
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $inc: views +1, stock -5
db.articles.updateOne(
{ _id: 1 },
{ $inc: { views: 1 } }
)
db.products.updateOne(
{ _id: 2 },
{ $inc: { stock: -5 } }
)
Saída:
// Quando o campo está ausente: views é criado como 1; stock diminui em 5
📌 Notas
- Somente tipos numéricos são suportados; $inc em um campo não numérico gera erro
- Um incremento de 0 ainda cria o campo se ele estiver ausente
- $inc é atômico; não é preciso um find-then-update separado
🏷️ Tags Relacionados
💡 Casos Relacionados
Prática: CRUD para um sistema de comentários de blog
Processamento de transações: ACID e consistência entre múltiplos documentos
Atualização do documento: Uma explicação detalhada sobre `updateOne` e `updateMany`
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
Q$inc pode operar em strings?
ANão. $inc aceita apenas tipos numéricos; usá-lo em strings gera erro. Para concatenação de strings use $concat (agregação) ou leitura-escrita manual.
QO que acontece quando $inc atinge um campo ausente?
ASe o campo não existe, $inc trata o valor inicial como 0 e cria o campo com a quantia do incremento. O campo deve ser numérico ou um erro será gerado.
Q$inc pode decrementar um valor?
ASim, passe uma quantia negativa, ex.: { $inc: { score: -5 } } decrementa score em 5. $inc é atômico, ideal para contadores e rankings sob concorrência.