MongoDB-aggregation erbjuder $max
operatör, men i ditt fall vill du ha "hela" posten som den är. Så det lämpliga att göra här är $sort
och använd sedan $first
operator inom en $group
uttalande:
db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Så "sorteringen" får ordningen rätt, och "grupperingen" väljer den första förekomsten inom "gruppering"-nyckeln där dessa fält finns.
Mestadels $first
här eftersom $sort
görs i omvänd ordning. Du kan också använda $last
även i stigande ordning.