Bạn có thể sử dụng $first
để lấy các giá trị từ tài liệu đầu tiên trong mỗi nhóm của một đường dẫn được sắp xếp:
var allids = ['xxxxx','yyyy'];
Game.aggregate([
{$match: {'oid': {$in:allids}}},
{$sort: {'number_plays': -1}},
{$group: {
_id: '$oid',
game_name: {$first: "$game_name"},
game_id: {$first: "$game_id"},
number_plays: {$first:"$number_plays"}
}}
], function(err,list){
console.log(list);
res.end();
});
Vì bạn đã sắp xếp theo number_plays
giảm dần trong giai đoạn trước của đường dẫn, điều này sẽ lấy các giá trị từ mỗi oid
tài liệu của nhóm có number_plays
cao nhất .