Apa yang Anda inginkan adalah sesuatu yang dapat dicapai dengan kerangka kerja agregasi. Bentuk dasar dari ( yang berguna bagi orang lain ) adalah:
db.collection.aggregate([
// Group by the grouping key, but keep the valid values
{ "$group": {
"_id": "$chainId",
"docId": { "$first": "$_id" },
"messageId": { "$first": "$messageId" },
"createOn": { "$first": "$createdOn" }
}},
// Then sort
{ "$sort": { "createOn": -1 } }
])
Sehingga "grup" pada nilai yang berbeda dari "messageId" saat mengambil $first
nilai batas untuk masing-masing bidang lainnya. Sebagai alternatif jika Anda ingin yang terbesar gunakan $last
sebagai gantinya, tetapi untuk baris terkecil atau terbesar mungkin masuk akal untuk $sort
pertama, jika tidak gunakan saja $min
dan $max
jika seluruh baris tidak penting.
Lihat MongoDB aggregate()
dokumentasi untuk informasi lebih lanjut tentang penggunaan, serta driver JavaDocs dan dokumentasi konektor SpringData Mongo untuk lebih banyak penggunaan metode agregat dan kemungkinan pembantu.