tailable()(可追踪游标)

最后更新:2026-10-09

tailable()(可追踪游标)

tailable()把游标标记为可追踪模式,例如`db.logs.find().tailable()`。可追踪游标不会在数据耗尽时自动关闭,而是持续等待新数据,常用于tail日志和Change Stream之前监控插入数据的场景。要求集合必须是有上限的Capped集合;在副本集环境下配合awaitData选项效果更佳。

分类游标
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

db.<集合>.find(<条件>).tailable({ awaitData: <bool> })

⚙️ 参数

awaitData可选。true时在无新数据时阻塞等待而非立即返回。

返回值:标记为可追踪的游标(可继续链式调用)。

▶ 示例

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

// tailable:持续读取日志集合的新增记录
const cursor = db.logs.find()
  .tailable({ awaitData: true })
while (cursor.hasNext()) {
  print(cursor.next().msg)
}

运行结果:

login ok
order created
payment received

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Qtailable游标有什么用?
A用于持续读取Capped集合的新增数据,如实时日志追踪、监控数据流,数据耗尽不会自动关闭。
Qtailable有什么限制?
A只能用于Capped集合;新项目建议改用watch()变更流,功能更强且支持普通集合。
Qtailable和watch有什么区别?
Atailable()只支持Capped集合并轮询新数据;watch()基于oplog变更流,支持普通集合和更多事件类型。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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