Agregasi MongoDB menawarkan $max
operator, tetapi dalam kasus Anda, Anda ingin catatan "keseluruhan" apa adanya. Jadi hal yang tepat untuk dilakukan di sini adalah $sort
lalu gunakan $first
operator dalam $group
pernyataan:
db.collection.aggregate([
{ "$sort": { "session": 1, "age": -1 } },
{ "$group": {
"_id": "$session",
"age": { "$first": "$age" },
"firstName": { "$first" "$firstName" },
"lastName": { "$first": "$lastName" }
}}
])
Jadi "penyortiran" mendapatkan urutan yang benar, dan "pengelompokan" memilih kemunculan pertama di dalam kunci "pengelompokan" di mana bidang-bidang itu ada.
Kebanyakan $first
di sini karena $sort
dilakukan dalam urutan terbalik. Anda juga dapat menggunakan $last
ketika dalam urutan menaik juga.