Agregacja MongoDB oferuje $max
operatora, ale w twoim przypadku chcesz, aby „cały” rekord był taki, jaki jest. Odpowiednią rzeczą do zrobienia tutaj jest $sort
a następnie użyj $first
operator w $group
oświadczenie:
db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Tak więc „sortowanie” zapewnia właściwą kolejność, a „grupowanie” wybiera pierwsze wystąpienie w kluczu „grupowanie”, w którym istnieją te pola.
Głównie $first
tutaj, ponieważ $sort
odbywa się w odwrotnej kolejności. Możesz także użyć $last
również w kolejności rosnącej.