A agregação do MongoDB oferece o
$max
operador, mas no seu caso você quer o registro "inteiro" como está. Portanto, a coisa apropriada a fazer aqui é $sort
e, em seguida, use o $first
operador dentro de um $group
demonstração:db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Portanto, a "classificação" obtém a ordem correta e o "agrupamento" escolhe a primeira ocorrência dentro da chave "agrupamento" onde esses campos existem.
Principalmente
$first
aqui porque o $sort
é feito na ordem inversa. Você também pode usar $last
quando em ordem crescente também.