Mongo 汇总 $sum 行为
Mongo aggregate $sum behavior
我在 Motor 中有这个查询(看起来几乎与 CLI 查询完全一样):
response = yield self.db.orders.aggregate([
{'$match': {'reader.uid': reader.get('uid'), 'status': {'$in': statuses}}},
{'$sort': {'create_datetime': -1}},
{'$project': {'_id': 1, 'status': 1, 'create_datetime': 1, 'documents': 1}},
{'$group': {
'_id': 0,
'info': {'$push': {'status': '$status', 'create_datetime': '$create_datetime', 'documents': '$documents'}},
'total': {'$sum': 1}
}},
{'$skip': skip},
{'$limit': int(limit)}
])
需要获取 $skip
和 $limit
之前的文档总数。不确定 $sum
到底是如何工作的,但在此查询中,我得到了正确的结果,但是当我传递实际 _id
时,total
值为 1:
{'$group': {
'_id': '$_id',
'info': {'$push': {'status': '$status', 'create_datetime': '$create_datetime', 'documents': '$documents'}},
'total': {'$sum': 1}
}},
我想在结果中获得真实的 _id
和正确的 total
值。
Mongo 中的新手,感谢所有答案。
我在 Motor 中有这个查询(看起来几乎与 CLI 查询完全一样):
response = yield self.db.orders.aggregate([
{'$match': {'reader.uid': reader.get('uid'), 'status': {'$in': statuses}}},
{'$sort': {'create_datetime': -1}},
{'$project': {'_id': 1, 'status': 1, 'create_datetime': 1, 'documents': 1}},
{'$group': {
'_id': 0,
'info': {'$push': {'status': '$status', 'create_datetime': '$create_datetime', 'documents': '$documents'}},
'total': {'$sum': 1}
}},
{'$skip': skip},
{'$limit': int(limit)}
])
需要获取 $skip
和 $limit
之前的文档总数。不确定 $sum
到底是如何工作的,但在此查询中,我得到了正确的结果,但是当我传递实际 _id
时,total
值为 1:
{'$group': {
'_id': '$_id',
'info': {'$push': {'status': '$status', 'create_datetime': '$create_datetime', 'documents': '$documents'}},
'total': {'$sum': 1}
}},
我想在结果中获得真实的 _id
和正确的 total
值。
Mongo 中的新手,感谢所有答案。