watch()(监听集合变更)

最后更新:2026-10-09

watch()(监听集合变更)

watch()监听集合的变更并返回变更流(Change Stream),例如`db.users.watch([{ $match: { 'operationType': 'insert' } }])`。每次文档插入、更新、删除、替换都会产生变更事件。它只支持副本集和分片集群,单机standalone无法使用。常用于实时数据同步、缓存失效、审计日志等场景。

分类索引与管理
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

db.<集合>.watch(<管道数组>, { fullDocument: 'updateLookup' })

⚙️ 参数

管道数组可选。对变更事件的聚合管道,用于过滤事件。
fullDocument可选。'updateLookup'让更新事件附带文档完整内容。

返回值:Change Stream游标,可遍历或监听变更事件。

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// watch:监听users集合的插入事件
const stream = db.users.watch([
  { $match: { 'operationType': 'insert' } }
])
stream.forEach(ev => print('新用户: ' + ev.fullDocument.name))

运行结果:

新用户: Alice
新用户: Bob

📌 注意事项

📚 相关教程

❓ 常见问题

Qwatch在单机MongoDB能用吗?
A不能,watch()要求副本集或分片集群环境,单机部署会报错。
Qwatch能只监听插入事件吗?
A可以,用管道过滤:db.users.watch([{$match: {'operationType': 'insert'}}])。
Qwatch适合什么场景?
A实时数据同步、缓存失效、审计日志、事件驱动的业务流程等需要感知数据变化的场景。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏