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 MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

db.<collection>.watch(<pipeline>, { fullDocument: 'updateLookup' })

⚙️ Parâmetros

pipelineOpcional. Pipeline de agregação que filtra eventos de alteração.
fullDocumentOpcional. '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

📚 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.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%