我有一个MongoDB查询如下:
Disable cache
这导致以下输出:
data = db.collection.aggregate([{"$match":{"created_at":{"$gte":start,"$lt":end}}},{"$group":{"_id":"$stage","count":{"$sum":1}}},{"$match":{"count":{"$gt":m{u'count': 296, u'_id': u'10.57.72.93'}
我正在尝试按'计数'对输出进行排序。柱:
{u'count': 230, u'_id': u'111.11.111.111'}
{u'count': 2240, u'_id': u'111.11.11.11'}
...但我收到以下错误:
data.sort('count', pymongo.DESCENDING)
有人可以解释这个错误的原因吗?
答案 0 :(得分:6)
使用Aggregation example中显示的$sort
:
from bson.son import SON
data = db.collection.aggregate([
{"$match":{"created_at":{"$gte":start,"$lt":end}}},
{"$group":{"_id":"$stage","count":{"$sum":1}}},
{"$match":{"count": ... }},
{"$sort": SON([("count", -1)])} # <---
])
替代通用解决方案:使用sorted
和自定义键功能:
data = db.collection.aggregate(...)
data = sorted(data, key=lambda x: x['count'], reverse=True)
答案 1 :(得分:0)
您可能想要使用$sort
。同时检查Mongo docs。
答案 2 :(得分:0)
聚合管道具有$sort
管道阶段:
data = db.collection.aggregate([
{ "$match":{"created_at":{"$gte":start,"$lt":end} }},
{ "$group":{ "_id":"$stage","count":{"$sum":1} }},
{ "$match":{
"count":{ "$gt": 296 } # query trimmed because your question listing is incomplete
}},
{ "$sort": { "count": -1 } } # Actual sort stage
])
另一个.sort()
方法用于“游标”,它与聚合管道不同。