L'agrégation MongoDB offre le $max
opérateur, mais dans votre cas, vous voulez que l'enregistrement "entier" soit tel qu'il est. Donc, la chose appropriée à faire ici est $sort
puis utilisez le $first
opérateur au sein d'un $group
déclaration :
db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Ainsi, le "tri" obtient le bon ordre et le "groupement" sélectionne la première occurrence dans la clé de "groupement" où ces champs existent.
Principalement $first
ici parce que le $sort
se fait dans l'ordre inverse. Vous pouvez également utiliser $last
également dans un ordre croissant.