Die MongoDB-Aggregation bietet den $max
Operator, aber in Ihrem Fall möchten Sie den "ganzen" Datensatz so, wie er ist. Das Richtige hier ist also $sort
und verwenden Sie dann $first
Operator innerhalb einer $group
Aussage:
db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Das „Sortieren“ sorgt also für die richtige Reihenfolge, und das „Gruppieren“ wählt das erste Vorkommen innerhalb des „Gruppierungs“-Schlüssels aus, in dem diese Felder vorhanden sind.
Meistens $first
hier, weil die $sort
erfolgt in umgekehrter Reihenfolge. Sie können auch $last
verwenden wenn auch in aufsteigender Reihenfolge.