Mongodb: so sortieren sie nach mehreren feldern


Sie können die folgende Syntax verwenden, um Dokumente in MongoDB nach mehreren Feldern zu sortieren:

 db.myCollection.find().sort( { " field1 ": 1, " field2 ": -1 } )

Dieser spezielle Code sortiert die Dokumente in der Sammlung namens „myCollection“ zuerst nach Feld 1 aufsteigend und dann nach Feld 2 absteigend.

Die folgenden Beispiele zeigen, wie diese Syntax mit einem Inkassoteam mit den folgenden Dokumenten verwendet wird :

 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})

Beispiel 1: Sortieren nach mehreren Feldern in MongoDB (aufsteigend)

Wir können den folgenden Code verwenden, um die Dokumente in der Teams- Sammlung zuerst durch Erhöhen der „Punkte“ und dann durch Erhöhen der „Bounces“ zu sortieren:

 db.teams.find().sort( { " points ": 1, " rebounds ": 1 } )

Diese Abfrage gibt die folgenden Ergebnisse zurück:

 { _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 }

Beachten Sie, dass die Dokumente nach zunehmendem „Punkte“-Feld (vom kleinsten zum größten) und dann nach zunehmendem „Rebounds“-Feld (vom kleinsten zum größten) sortiert sind.

Beispiel 2: Sortieren nach mehreren Feldern in MongoDB (absteigend)

Wir können den folgenden Code verwenden, um die Dokumente in der Teams- Sammlung zuerst durch Verringern der „Punkte“ und dann durch Verringern der „Bounces“ zu sortieren:

 db.teams.find().sort( { " points ": -1, " rebounds ": -1 } )

Diese Abfrage gibt die folgenden Ergebnisse zurück:

 { _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 }

Beachten Sie, dass die Dokumente nach abnehmendem „Punkte“-Feld (vom größten zum kleinsten) und dann nach abnehmendem „Rebounds“-Feld (vom größten zum kleinsten) sortiert sind.

Hinweis : Die vollständige Dokumentation zur Sortierfunktion finden Sie hier .

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in MongoDB ausführen:

MongoDB: So sortieren Sie nach Datum
MongoDB: So gruppieren und zählen
MongoDB: So gruppieren Sie nach mehreren Feldern

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert