如果你使用的是pymongo 3.7.0或更高版本,请使用see this answer。 如果希望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 = 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:
# pymongo 3.9.0
while not is_over:
it = items.find({"some": "/value/"}).skip(offset).size(limit)
# List will load the cursor content into memory
it = list(it)
if len(it) < size:
is_over = True
offset += size
# Have 27 items in collection
db = MongoClient(_URI)[DB_NAME][COLLECTION_NAME]
cursor = db.find()
count = db.find().explain().get("executionStats", {}).get("nReturned")
# Output: 27
cursor = db.find().limit(5)
count = db.find().explain().get("executionStats", {}).get("nReturned")
# Output: 5
# Can also use cursor
for item in cursor:
...
7条答案
按热度按时间e7arh2l61#
如果你使用的是pymongo 3.7.0或更高版本,请使用see this answer。
如果希望
results_count
忽略您的limit()
:如果希望
results_count
在limit()
处封顶,请将applySkipLimit
设置为True
:qhhrdooz2#
由于pymongo 3.7.0及以上版本不推荐使用count(),请改用
Collection.count_documents
。运行cursor.count
或collection.count
将导致以下警告消息:要使用
count_documents
,可按如下方式调整代码注意:
count_documents
方法与count
方法相比执行速度相对较慢。为了进行优化,可以使用collection.estimated_document_count
。此方法将根据集合元数据返回文档的估计数量(顾名思义)。3ks5zfa03#
如果你已经传递了极限'num',不确定为什么你要计数。无论如何,如果你想Assert,下面是你应该做的。
这将使results_count与num匹配
vof42yt14#
无法对@Sohaib Farooqi的回答发表不幸的评论......简单说明:尽管
cursor.count()
已被弃用,但在我的所有测试中,它比collection.count_documents()
快得多,当计算集合中的所有文档时(即filter={})。运行db.currentOp()
显示collection.count_documents()
使用聚合管道,而cursor.count()
不使用。这可能是一个原因。4nkexdtk5#
这个线程已经有11年的历史了。然而,在2022年,'count()'函数已经被弃用了。下面是我用Python在MongoDB中计算文档数量的方法。这是一个代码片段的图片。不需要创建一个空列表,我只是想做得古怪一些。希望这能有所帮助:). Code snippet here.
qybjjes16#
在我的例子中,这取决于给定查询的匹配元素的计数,并且肯定不会重复这个查询两次:
一以获得计数,以及
两个以获取结果集。
我知道查询结果集不是很大,内存容量有限,因此,我可以将其转换为列表,并获得列表长度。
此代码说明了用例:
kse8i1jr7#
如果你想使用光标,也想计数,你可以试试这个方法
您可以从www.example.com了解更多信息https://pymongo.readthedocs.io/en/stable/api/pymongo/cursor.html#pymongo.cursor.Cursor.explain