watch() (Observar Alterações na Coleção)
Última atualização: 2026-10-09
watch() (Observar Alterações na Coleção)
watch() monitora uma coleção em busca de alterações e retorna um Change Stream, ex.: `db.users.watch([{ $match: { 'operationType': 'insert' } }])`. Cada inserção, atualização, exclusão ou substituição emite um evento de alteração. Ele exige um replica set ou cluster fragmentado — servidores standalone não o suportam. Usos típicos incluem sincronização em tempo real, invalidação de cache e registro de auditoria.
| Categoria | Índice e Administração |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
db.<collection>.watch(<pipeline>, { fullDocument: 'updateLookup' })
⚙️ Parâmetros
| pipeline | Opcional. Pipeline de agregação que filtra eventos de alteração. |
|---|---|
| fullDocument | Opcional. 'updateLookup' anexa o documento completo aos eventos de atualização. |
Retorno:Um cursor de Change Stream para iterar ou escutar.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// watch: ouve inserções em users
const stream = db.users.watch([
{ $match: { 'operationType': 'insert' } }
])
stream.forEach(ev => print('New user: ' + ev.fullDocument.name))
Saída:
Novo usuário: Alice
Novo usuário: Bob
📌 Notas
- Apenas replica sets e clusters fragmentados — não disponível em standalone
- Os eventos de alteração são persistidos no servidor no oplog
- Torne os handlers idempotentes caso os eventos sejam reentregues
🏷️ Tags Relacionados
💡 Casos Relacionados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO watch funciona em um MongoDB standalone?
ANão — watch() precisa de um replica set ou cluster fragmentado; ele gera erro em uma implantação standalone.
QO watch pode ouvir apenas inserções?
ASim — filtre com um pipeline: db.users.watch([{$match: {'operationType': 'insert'}}]).
QQuais são os casos de uso típicos de watch()?
ASincronização em tempo real, invalidação de cache, registro de auditoria e fluxos orientados a eventos que precisam reagir a alterações de dados.