以下是示例:
{_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}}
答案 0 :(得分:1)
您需要$unwind来确定哪一个具有最高价值,然后再分组才能只获得一个:
db.col.aggregate([
{ $unwind: "$sort" },
{ $sort: { "sort.order": -1 } },
{
$group: {
_id: "$_id",
sort: { $first: "$sort" }
}
},
{ $sort: { "sort.order": -1 } },
])