如何在分组上对数组进行排序

时间:2016-05-02 16:49:30

标签: mongodb mongodb-query aggregation-framework

我有一系列具有以下结构的文件:

{
    "_id" : ObjectId("..."),
    "group_id" : 1,
    "value" : 4,
    "date": "1970-01-01"
}

我希望按group_id对文档进行分组,然后对该组中包含的文档进行排序。现在,我只能构建一个未排序的数组:

db.collection.aggregate({$group: {_id: "$group_id", count: {$sum: 1}, docs: {$push: "$$CURRENT"}}})

如何在我的阵列中订购我的文档,例如value

1 个答案:

答案 0 :(得分:0)

您需要首先按“组”对文档进行排序,然后使用$sort按组管道运算符按升序排序“值”。

db.collection.aggregate([
    { "$sort": { "group_id": 1, "value": 1 } },
    { "$group": { 
        "_id": "$group_id", 
        "count": { "$sum": 1 }, 
        "docs": { "$push": "$$CURRENT" }
    }}
])