noCursorTimeout()(禁止游标超时)

最后更新:2026-10-09

noCursorTimeout()(禁止游标超时)

noCursorTimeout()禁用游标的服务器端闲置超时,语法为`db.users.find().noCursorTimeout()`。默认游标闲置超过10分钟会被服务器清理,启用后游标可长期保持,适合慢速消费大批量数据的批处理任务。注意:长期不关闭的游标会占用服务器资源,用完务必手动close(),避免游标泄漏。

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

📝 语法

db.<集合>.find(<条件>).noCursorTimeout()

返回值:禁用超时后的游标(可继续链式调用)。

▶ 示例

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

// noCursorTimeout:长时间遍历大集合
const cursor = db.logs.find().noCursorTimeout().batchSize(100)
cursor.forEach(doc => processDoc(doc))
cursor.close()

运行结果:

(遍历完成,无输出)

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q游标默认多久超时?
A服务器默认在游标闲置10分钟后回收,noCursorTimeout()可以禁用这个机制。
Q用了noCursorTimeout要注意什么?
A必须确保遍历完或提前手动close()游标,否则服务器资源会被长期占用造成泄漏。
Q什么时候需要noCursorTimeout?
A批处理遍历耗时可能超过10分钟的慢速大任务,例如逐条清洗上百万条文档。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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