在Mongodb的Pymongo中,我该如何进行计数()?
题
for post in db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num):
这是我当前的代码。
如何获得计数()?
解决方案
如果您使用的是Pymongo版本3.7.0或更高版本, 看到这个答案 反而。
如果你想 results_count
忽略你的 limit()
:
results = db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num)
results_count = results.count()
for post in results:
如果你想要 results_count
被封顶 limit()
, 放 applySkipLimit
至 True
:
results = db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num)
results_count = results.count(True)
for post in results:
其他提示
不确定如果您已经通过限制“ num”,为什么要计数。无论如何,如果您想断言,这是您应该做的。
results = db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num)
results_count = results.count(True)
那将匹配 Results_count 和 num
自Pymongo版本3.7.0及以上版本 count()已弃用. 。而是使用 Collection.count_documents
. 。跑步 cursor.count
或者 collection.count
将导致以下警告消息:
DeprecationWarning: count is deprecated. Use Collection.count_documents instead.
使用 count_documents
代码可以按如下调整
import pymongo
db = pymongo.MongoClient()
col = db[DATABASE][COLLECTION]
filter = {"test_set":"abc"}
sort = [("abc",pymongo.DESCENDING)]
skip = 10
limit = 10
doc_count = col.count_documents(filter, skip=skip)
results = col.find(filter).sort(sort).skip(skip).limit(limit)
for doc in result:
//Process Document
笔记: count_documents
方法的性能相对较慢 count
方法。为了优化,您可以使用 collection.estimated_document_count
. 。此方法将根据集合元数据返回估计的文档数量(如建议的名称)。
不隶属于 StackOverflow