我在 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的新手,感谢所有答案。