python - 对 PyMongo 查询的结果进行排序

标签 python mongodb mongodb-query pymongo aggregation-framework

我有一个 MongoDB 查询如下:

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)

...但我收到以下错误:

'CommandCursor' object has no attribute 'sort'

谁能解释这个错误的原因?

最佳答案

使用 $sort,如 Aggregation example 所示:

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)

关于python - 对 PyMongo 查询的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36566166/

相关文章:

python - 如何比较 Pandas 数据框的聚合部分?

python - 如何连接到http ://localhost:9000/api/v1/data from jupyter in docker

Python SDK Azure 资源图响应不可迭代

javascript - Mongodb insertOne改变数据?

php - 如何使用 MongoDb 特定运算符 $size 来查找大于、小于、介于和不等于 Laravel/jenssegers 中的值的数组大小?

mongodb - 在 MongoDB 中查询多个集合的最有效方法是什么?

mongodb - 聚合时如何不一一列出项目中的所有字段?

python : importing different module with same name

c# - 使用 StringObjectIdGenerator 映射的 Id 在数据库中生成字符串 _id

node.js - nodejs mongodb 驱动程序中 findAndModify 查询中的投影