You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyMongo中Cursor使用allow_disk_use报错的解决咨询

解决PyMongo中allow_disk_use()调用报错的问题

我来帮你搞定这个问题,你遇到的报错根源是找错了allow_disk_use的正确调用方式——它不是Cursor对象的方法,而是查询初始化时需要传递的配置选项!

报错原因

你之前尝试的几种写法,都是在find()返回的Cursor对象上调用allow_disk_use(),但这个方法根本不存在于Cursor类中,自然会触发AttributeError。

allow_disk_use的作用是告诉MongoDB:当执行排序这类内存开销较大的操作时,可以使用磁盘临时文件来辅助完成。这个配置必须在创建查询Cursor的阶段就指定,无法对已生成的Cursor对象事后修改。

正确用法

针对你的场景,有两种可行的正确写法:

方法1:在find()中直接传入参数

这是最直观的方式,把allow_disk_use=True作为find()的参数传递:

from pymongo import MongoClient

client = MongoClient()
db = client['cvedb']
colCVE = db["cves"]
# 直接在find中指定allow_disk_use选项
cve_ = colCVE.find(allow_disk_use=True).sort("Modified", -1)

方法2:使用with_options()生成新Cursor

如果已经创建了基础的Cursor对象,想要添加allow_disk_use选项,可以用with_options()方法(它会返回一个携带新配置的Cursor实例,原Cursor不会被修改):

from pymongo import MongoClient

client = MongoClient()
db = client['cvedb']
colCVE = db["cves"]
# 先创建基础查询Cursor
cve_base = colCVE.find().sort("Modified", -1)
# 生成带有allow_disk_use选项的新Cursor
cve_ = cve_base.with_options(allow_disk_use=True)

这两种写法都完全兼容你的MongoDB 4.4.1版本和最新版PyMongo,你可以根据自己的代码场景选择合适的方式。

内容的提问来源于stack exchange,提问作者hack3r-0m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:48:13