如何计算pymongo聚合游标而不进行迭代

我想在pymongo版本3.0+中获取聚合游标中的记录总数。 有什么办法可以在没有迭代游标的情况下获得总数?

cursor = db.collection.aggregate([{"$match": options},{"$group": {"_id": groupby,"count": {"$sum":1}}} ])
cursorlist = [c for c in cursor]
print len(cursorlist)

有没有办法跳过上面的迭代?


您可以添加另一个组管道,您可以在其中指定_idNone来计算所有输入文档的累计值,这是您可以从中获取总计数以及原始分组计数的地方,尽管它是一个累积数组:

>>> pipeline = [
...     {"$match": options},
...     {"$group": {"_id": groupby, "count": {"$sum":1}}},
...     {"$group": {"_id": None, "total": {"$sum": 1}, "details":{"$push":{"groupby": "$_id", "count": "$count"}}}}
... ]
>>> list(db.collection.aggregate(pipeline))
链接地址: http://www.djcxy.com/p/88945.html

上一篇: How to count pymongo aggregation cursor without iterating

下一篇: Text Color Based on Background Color