allowDiskUse()(允许排序写盘)

最后更新:2026-10-09

allowDiskUse()(允许排序写盘)

allowDiskUse()允许游标在执行sort()等需要大量内存的阻塞型操作时使用磁盘,语法为`db.users.find().sort({ age: -1 }).allowDiskUse()`。默认排序超过100MB内存限制会报错,启用后中间结果可写入临时文件。它常用于超大结果集的排序和聚合场景,代价是磁盘IO带来的性能下降。

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

📝 语法

db.<集合>.find(<条件>).sort(<排序键>).allowDiskUse()

返回值:启用写盘后的游标(可继续链式调用)。

▶ 示例

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

// allowDiskUse:大集合排序时允许写盘
const result = db.logs.find({ level: 'error' })
  .sort({ timestamp: -1 })
  .allowDiskUse()
  .toArray()
result.length

运行结果:

1200

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q什么时候需要allowDiskUse?
A排序或聚合的中间结果超过100MB内存限制报错时启用,例如对超大集合做全量排序。
QallowDiskUse影响性能吗?
A会,中间结果写盘比纯内存慢很多,能用索引排序就优先用索引避免写盘。
QallowDiskUse和聚合的allowDiskUse一样吗?
A语义相同,都是允许中间结果写盘;游标方法作用于find().sort(),聚合选项作用于aggregate()。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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