Mongodb: sorteren op meerdere velden
U kunt de volgende syntaxis gebruiken om documenten in MongoDB op meerdere velden te sorteren:
db.myCollection.find().sort( { " field1 ": 1, " field2 ": -1 } )
Deze specifieke code sorteert de documenten in de verzameling genaamd myCollection eerst op veld 1 oplopend en vervolgens op veld 2 aflopend.
De volgende voorbeelden laten zien hoe u deze syntaxis kunt gebruiken met een incassoteam met de volgende documenten:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Spurs ", points: 30, rebounds: 12}) db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Cavs ", points: 25, rebounds: 9})
Voorbeeld 1: Sorteren op meerdere velden in MongoDB (oplopend)
We kunnen de volgende code gebruiken om de documenten in de Teams- verzameling eerst te sorteren door ‚punten‘ te verhogen en vervolgens door ‚bounces‘ te verhogen:
db.teams.find().sort( { " points ": 1, " rebounds ": 1 } )
Deze query retourneert de volgende resultaten:
{ _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 }
Merk op dat de documenten worden gesorteerd door het veld “punten” te vergroten (van klein naar groot) en vervolgens door het veld “rebounds” te vergroten (van klein naar groot).
Voorbeeld 2: Sorteren op meerdere velden in MongoDB (aflopend)
We kunnen de volgende code gebruiken om de documenten in de teamscollectie eerst te sorteren door het aantal „punten“ te verminderen en vervolgens door het aantal „bounces“ te verminderen:
db.teams.find().sort( { " points ": -1, " rebounds ": -1 } )
Deze query retourneert de volgende resultaten:
{ _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 }
Merk op dat de documenten worden gesorteerd door het veld “punten” te verkleinen (van groot naar klein) en vervolgens door het veld “rebounds” te verkleinen (van groot naar klein).
Let op : De volledige documentatie voor de sorteerfunctie vindt u hier .
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in MongoDB kunt uitvoeren:
MongoDB: sorteren op datum
MongoDB: Groeperen op en tellen
MongoDB: groeperen op meerdere velden