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(), applySkipLimitTrue:

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_countnum

自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. 。此方法将根据集合元数据返回估计的文档数量(如建议的名称)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top