我正在做一个 MongoDB 查询,我需要循环遍历我的结果并计算结果的长度以查看是否返回了一个空结果。
这是我尝试过的:
Record = db.mycol.find({"datetimeraw": dt.now().strftime('%Y%m%d%H%M')})
RecordLen = Record.count()
print('LEN IS':RecordLen)
for x in Record:
print(x)
此代码有效,但当我使用它时出现以下错误:DeprecationWarning: count is deprecated。请改用 Collection.count_documents。
问题是我不能使用 count_documents()
,因为它将返回一个整数而不是我可以循环的结果列表;在这种情况下,我将不得不进行两个查询:一个用于计数,一个用于检索结果,我想避免这种情况。有什么办法可以做到这一点,或者我只能使用已弃用的功能吗?
最佳答案
在 MongoDB 中,.find()
总是会返回一个游标,它可以是空的 []
或者文档/字典数组 [{}, {}]
.
作为.count()可以通过三种方式使用:
/** 1. Queries all docs based on filter and then returns no.of docs matches with query */
db.collection.find( { queryFilter } ).count()
/** 2. Returns no.of docs */
db.collection.count()
/** 3. Returns a cursor `results` */
results = db.collection.find( { queryFilter } )
results.count()
所以前两个选项类似于countdocuments()和 estimateddocumentcount() (返回一个数字)但是因为你想返回文档并获得类似于 cursor.count() 的光标计数然后您可以使用 len()
方法在代码中完成此操作:len(list(results))
。
关于python - MongoDB - 计数已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62536920/