Wat u wilt, is iets dat kan worden bereikt met het aggregatieraamwerk. De basisvorm van ( die nuttig is voor anderen ) is:
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 } }
])
Zodat "groepen" op de verschillende waarden van "messageId" terwijl de $first
grenswaarden voor elk van de andere velden. Als u de grootste wilt, gebruik dan $last
in plaats daarvan, maar voor de kleinste of de grootste per rij is het waarschijnlijk logisch om $sort
gebruik anders gewoon $min
en $max
als de hele rij niet belangrijk is.
Zie de MongoDB aggregate()
documentatie voor meer informatie over het gebruik, evenals de documentatie over de JavaDocs- en SpringData Mongo-connector van het stuurprogramma voor meer gebruik van de aggregatiemethode en mogelijke helpers.