Агрегация MongoDB предлагает оператор $max
, но в вашем случае вы хотите, чтобы «целая» запись была такой, какая есть. Таким образом, подходящей задачей является $sort
, а затем использовать оператор $first
в инструкции $group
:
db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Таким образом, «сортировка» получает право порядка, а «группировка» выбирает первое вхождение в ключ «группировки», где эти поля существуют.
В основном $first
здесь, потому что $sort
выполняется в обратном порядке. Вы также можете использовать $last
в порядке возрастания.