allow_disk_use无法处理PyMongo中的游标


>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client['cvedb']
>>> db.list_collection_names()
['cpeother', 'mgmt_blacklist', 'via4', 'capec', 'cves', 'mgmt_whitelist', 'ranking', 'cwe', 'info', 'cpe']
>>> colCVE = db["cves"]
>>> cve = colCVE.find().sort("Modified", -1) # this works
>>> cve_ = colCVE.find().allow_disk_use(True).sort("Modified", -1) # this doesn't work
AttributeError: 'Cursor' object has no attribute 'allow_disk_use'
>>> cve_ = colCVE.find().sort("Modified", -1).allow_disk_use(True) # this doesn't work
AttributeError: 'Cursor' object has no attribute 'allow_disk_use'
>>> cve.allow_disk_use(True) # this doesn't work
AttributeError: 'Cursor' object has no attribute 'allow_disk_use'
>>>

我想使用allow_disk_use()方法,但出现了上述错误。我的MongoDB服务器是4.4.1,pymongo也是最新版本。

我已经参考了文档和来源,但我不知道我做错了什么。不应该使用Cursor对象吗?如果有人能解释正确的方法以及为什么这不起作用,那就太好了。

在pymongo中,您可以将allowDiskUseaggregate:结合使用

cve_ = colCVE.aggregate([{"$sort": {"Modified": -1}}], allowDiskUse=True)

自3.11版本以来,您还可以将其传递给find():

cve_ = colCVE.find(allow_disk_use=True).sort("Modified", pymongo.DESCENDING)

除了beachy的答案,在升级到最新版本(3.11(后,给出CCD_ 6(问题中提到的(的查询恰好也能完美地工作。

最新更新