>>> 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中,您可以将allowDiskUse
与aggregate
:结合使用
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(问题中提到的(的查询恰好也能完美地工作。