La agregación de MongoDB ofrece el $max
operador, pero en su caso desea el registro "completo" tal como está. Entonces, lo apropiado para hacer aquí es $sort
y luego use el $first
operador dentro de un $group
declaración:
db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Entonces, la "clasificación" obtiene el orden correcto, y la "agrupación" elige la primera aparición dentro de la clave de "agrupación" donde existen esos campos.
Principalmente $first
aquí porque el $sort
se hace en orden inverso. También puede usar $last
cuando en orden ascendente también.