如何编写Mongo Aggregation以按数组

时间:2018-01-23 22:00:46

标签: mongodb sorting aggregation-framework

以下是示例:

{_id: 111, sort: [{order:1}, {order:3}]}
{_id: 222, sort: [{order:2}, {order:5}]}
{_id: 333, sort: [{order:1}, {order:3}, {order:4}]}

我想按sort.order从大到小排序,然后获取

{_id: 222, sort: {order:5}}
{_id: 333, sort: {order:4}}
{_id: 111, sort: {order:3}}

1 个答案:

答案 0 :(得分:1)

您需要$unwind来确定哪一个具有最高价值,然后再分组才能只获得一个:

db.col.aggregate([
    { $unwind: "$sort" },
    { $sort: { "sort.order": -1 } },
    {
        $group: {
            _id: "$_id",
            sort: { $first: "$sort" }
        }
    },
    { $sort: { "sort.order": -1 } },
])