Was Sie wollen, ist etwas, das mit dem Aggregationsframework erreicht werden kann. Die grundlegende Form von ( die für andere nützlich ist ) ist:
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 } }
])
Damit "gruppiert" man die unterschiedlichen Werte von "messageId", während man den $first
Grenzwerte für jedes der anderen Felder. Wenn Sie den größten Wert haben möchten, verwenden Sie alternativ $last
stattdessen, aber für die kleinste oder größte Zeile macht es wahrscheinlich Sinn, $sort
Verwenden Sie zuerst $min
und $max
wenn die ganze Zeile nicht wichtig ist.
Siehe MongoDB aggregate()
Dokumentation für weitere Informationen zur Verwendung sowie die Treiber-JavaDocs- und SpringData-Mongo-Connector-Dokumentation für weitere Informationen zur Verwendung der Aggregatmethode und möglicher Hilfsprogramme.