获取聚合方法MongoDB结果的大小

时间:2018-12-21 08:10:58

标签: python-3.x mongodb aggregate pymongo-3.x

我有这个汇总查询:

cr = db.last_response.aggregate([

{"$unwind": '$blocks'},
{"$match": {"sender_id": "1234", "page_id": "563921", "blocks.tag": "pay1"}},
{"$project": {"block": "$blocks.block"}}
])

现在我想获取它返回的元素数量(是否为空游标)。

这就是我的做法: 我定义了一个空数组:

x = []

我遍历游标并附加数组x:

for i in cr :
   x.append(i['block'])
print("length of the result of aggregation cursor :",len(x))

我的问题是:有没有像find()查询的count()方法那样更快的方法来获取聚合查询结果的数量?

谢谢

1 个答案:

答案 0 :(得分:1)

更快的方法是拒绝将所有数据从mongod传输到应用程序的操作。为此,您可以添加最后的小组讨论来对文档进行计数

{"$group": {"_id": None, "count": {"$sum": 1}}},

这意味着mongod会汇总并作为文档的结果计数。 如果不执行聚合管道,就无法获得结果计数。