我想在 pymongo 3.0+ 版中获取聚合游标中的记录总数。有没有办法在不遍历游标的情况下获得总计数?
cursor = db.collection.aggregate([{"$match": options},{"$group": {"_id": groupby,"count": {"$sum":1}}} ])
cursorlist = [c for c in cursor]
print len(cursorlist)
有没有办法跳过上面的迭代?
我想在 pymongo 3.0+ 版中获取聚合游标中的记录总数。有没有办法在不遍历游标的情况下获得总计数?
cursor = db.collection.aggregate([{"$match": options},{"$group": {"_id": groupby,"count": {"$sum":1}}} ])
cursorlist = [c for c in cursor]
print len(cursorlist)
有没有办法跳过上面的迭代?
您可以添加另一个组管道,在其中指定一个_id
值None
来计算所有输入文档作为一个整体的累积值,这是您可以获得总计数以及原始分组计数的地方,尽管在累积数组中:
>>> 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))