MongoDB-Sortierung: sort()-Methode & Beispiele

MongoDB-Sortierung: sort()-Methode & Beispiele

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Nov 26, 2020

Auf einen Blick: Die Sort()-Methode von MongoDB organisiert die Daten in aufsteigender oder absteigender Reihenfolge basierend auf festgelegten Feldern, was die Klarheit und Zugänglichkeit der Abfragen verbessert. Sie unterstützt verschiedene Datentypen und kann mit Methoden wie limit() und skip() kombiniert werden.

  • Die sort()-Methode benötigt Parameter, um Felder und Reihenfolge zu definieren.
  • Sortieren kann auf einzelne oder mehrere Felder angewendet werden, um ein besseres Datensatzmanagement zu gewährleisten.

In diesem Artikel zeige ich Ihnen, wie Sie die MongoDB-Sortiermethode in verschiedenen Szenarien verwenden können, einschließlich wie Sie sie zusammen mit anderen Methoden zur Sortierung eines bestimmten Datensatzes einsetzen können.

Die Verwendung der Sort()-Methode erhöht die Lesbarkeit einer Abfrage, was zu einem besseren Verständnis eines bestimmten Datensatzes führt. Außerdem werden sortierte Daten von Entwicklern genutzt, um komplexere Algorithmen zu schreiben.

Was ist Datenbanksortierung?

Datenbanksortierung präsentiert die Daten in aufsteigender oder absteigender Reihenfolge in Bezug auf die Daten in einem bestimmten Feld. Sie können Sortieroperationen für verschiedene Datentypen durchführen, wie zum Beispiel:

  • Streicher
  • Ganze Zahlen
  • Dezimal
  • Und so weiter.

Der Hauptvorteil des Sortierens ist, dass es die Lesbarkeit und Einheitlichkeit der Daten erhöht, was den Nutzern hilft, die Bedeutung des Datensatzes besser zu verstehen.

MongoDB sort()

In MongoDB erfolgt das Sortieren mit der Sort()- Methode. Die Sort()-Methode besteht aus zwei grundlegenden Bausteinen. Diese Bausteine sind die zu sortierenden Felder und die Sortierreihenfolge.

Die Sortierreihenfolge in MongoDB ist entweder durch eine Eins (1) oder eine Minus (-1) definiert. Hier steht die positive Eins für die aufsteigende Ordnung, während die negative für die absteigende Ordnung steht.

Grundlegende Syntax von MongoDB sort()

    db.collection_name.find().sort({field_name: sort order})

Laut der offiziellen Dokumentation verwendet MongoDB folgende Reihenfolge beim Vergleich verschiedener BSON-Typen von niedrig bis hoch. (BSON steht für Binary JSON Format.)

Dies ist das Serialisierungsformat, das in MongoDB verwendet wird, um Dokumente zu speichern und entfernte Prozeduraufrufe durchzuführen. Alle nicht vorhandenen Felder in einem Dokument werden als Nullobjekte behandelt.

  1. MinKey (interner Typ)
  2. Null
  3. Zahlen (Ints, Longs, Doubles, Dezimalzahlen)
  4. Symbol, Saite
  5. Ziel
  6. Array
  7. BinData
  8. ObjectId
  9. Boolesch
  10. Datum
  11. Zeitstempel
  12. Regulärer Ausdruck
  13. MaxKey (interner Typ)

Die folgenden Beispiele zeigen die Unterschiede zwischen einer unsortierten und einer sortierten MongoDB-Suchanfrage. Für dieses Beispiel verwenden wir die Sammlung "vehicleinformation".

"Fahrzeuginformations"-Sammeldaten

Unsortierte Sammlung

Wenn eine Suchanfrage mit der find()-Methode durchgeführt wird, besteht das Standardverhalten darin, die Ausgabe unsortiert zurückzugeben. Der {_id:0} -Operator wird verwendet, um die Dokument-ID für eine einfachere Ausgabe zu entfernen.

Ergebnisse in:

Sortierte Sammlung

    db.vehicleinformation.find({},{_id:0})

Ergebnisse in:

Um ein sortiertes Ergebnis zu erhalten, fügen wir die sort()- Methode am Ende der Suchanfrage (find()- Methode an. Dadurch kann der Benutzer eine sortierte Ausgabe erzeugen.

In diesem Fall werden die Daten in aufsteigender Reihenfolge nach dem Feld "Jahr" sortiert.

Ergebnisse in:

    db.vehicleinformation.find({},{_id:0}).sort({"year":1})

Ergebnisse in:

Wenn du der Sort()-Methode keine Argumente gibst, wird die Sammlung nicht sortiert, und die resultierende Ausgabe liegt in der Standardreihenfolge – also in der Reihenfolge, in der Mongo die Ergebnisse findet.

Ergebnis:

    db.vehicleinformation.find({},{_id:0}).sort({})<.pre>

Ergebnis:

Verwendung der MongoDB sort()-Methode

Dieser Abschnitt erklärt, wie die Sort()-Methode verwendet werden kann, um verschiedene Sortieroperationen durchzuführen. Springen Sie zur Sortieroption, die Sie benötigen:

Sortieren in aufsteigender Reihenfolge

In diesem Beispiel benutze ich das Textfeld "make", um die Ergebnisse in aufsteigender Reihenfolge zu erhalten. Der Operator eins ("{"make":1}) wird verwendet, um die aufsteigende Reihenfolge anzuzeigen, und die MongoDB-Projektion filtert alle anderen Felder außer dem "make"-Feld heraus.

Ergebnis:

    db.vehicleinformation.find({},{make:1,_id:0}).sort({"make":1})

Ergebnis:

Sortieren in absteigender Reihenfolge

Dieses Beispiel ist dasselbe wie oben, mit einem Unterschied, nämlich dass der Operator minus eins ({"make":-1}) verwendet wird, um die absteigende Reihenfolge anzuzeigen.

Ergebnis:

    db.vehicleinformation.find({},{make:1,_id:0}).sort({"make":-1})

Ergebnis:

Sortieren mit mehreren Feldern

Beim Sortieren mehrerer Felder sollten Sie Felder deklarieren, die innerhalb der sort()-Methode sortiert werden. Die Abfrage wird nach der Deklarationsposition der Felder sortiert, wobei die Sortierreihenfolge von links nach rechts ausgewertet wird. Um dies zu demonstrieren, verwenden wir die "vehiclesales"-Sammlung.

"Vehiclessales"-Sammlung

Ergebnis:

    db.vehiclesales.find({},{_id:0})

Ergebnis:

Das folgende Beispiel zeigt, wie man mit den Feldern "make" und "price" sortiert. Die Daten werden zunächst nach "make" sortiert, da es das erste Argument ist, und anschließend wird der Datensatz weiter nach dem Feld "price" sortiert.

Ergebnis:

    db.vehiclesales.find({},{_id:0}).sort({"make":1,"price":1})

Ergebnis:

Wie oben gezeigt, werden die Daten zunächst nach dem Markenfeld sortiert. Da es mehrere Dokumente mit demselben Hersteller-"Audi" gibt, werden die Daten erneut nach dem Preisfeld in aufsteigender Reihenfolge sortiert, was zu der obigen Ausgabe führt.

Sortieren mit der limit()-Methode

Die sort()-Methode kann zusammen mit der limit()-Methode verwendet werden, die die Anzahl der Ergebnisse in der Suchanfrage begrenzt. Sie sollten eine ganze Zahl an die limit()-Methode weitergeben, die dann die Anzahl der Dokumente angibt, auf die die Ergebnismenge begrenzt sein soll.

Die folgenden Beispiele verwenden die Sammlung "vehicleinformation", während das Ergebnis auf zwei Dokumente beschränkt und sowohl nach aufsteigender als auch absteigender Reihenfolge sortiert ist.

Ergebnis:

Ergebnisse in:

    db.vehicleinformation.find({},{_id:0}).sort({"make":1,"year":1}).limit(2).pretty()

Ergebnis:

    db.vehicleinformation.find({},{_id:0}).sort({"make":-1,"year":-1}).limit(2).pretty()

Ergebnisse in:

Sortieren mit der skip()-Methode

Sie können auch die skip()-Methode mit der sort()-Methode verwenden. Die skip()-Methode erlaubt es dem Benutzer, eine bestimmte Anzahl von Dokumenten aus dem resultierenden Datensatz zu überspringen.

Im folgenden Beispiel sieht man, dass die ersten vier Dokumente übersprungen werden, während sie nach Jahr in aufsteigender Reihenfolge sortiert werden.

Ergebnis:

    db.vehicleinformation.find({},{_id:0}).sort({"year":1}).skip(4).pretty()

Ergebnis:

Metadaten-Sortierung

Die Sort()-Methode kann verwendet werden, um die Metadatenwerte für ein berechnetes Metadatenfeld zu sortieren.

Das folgende Beispiel nutzte die "food"-Sammlung, um zu demonstrieren, wie Dokumente mit der Metadaten "textScore" sortiert werden können. Der Feldname in der sort()-Methode kann beliebig sein, da das Abfragesystem den Feldnamen ignoriert.

"Essen"-Sammlung

Ergebnis:

Ergebnis:

    db.food.find({},{_id:0})

Ergebnis:

    db.food.find({$text:{$search: "pizza"}}, {score:{$meta: "textScore"}, _id: 0}).sort({sort_example:{$meta: "textScore"}})

Ergebnis:

In dieser Abfrage haben wir das Sortierfeld als "sort_example" angegeben. Dies wird jedoch ignoriert, da wir Metadaten sortieren. Außerdem wird der resultierende Datensatz in absteigender Reihenfolge sortiert, da wir mit "textScore"-Metadaten sortieren.

Sortieren mit einem Index

MongoDB kann Sortieroperationen auf einem Einzelfeldindex in aufsteigender oder absteigender Reihenfolge durchführen. Bei zusammengesetzten Indizes bestimmt die Sortierreihenfolge, ob der Index sortiert werden kann. Die Sortierschlüssel müssen in derselben Reihenfolge wie im Index definiert aufgeführt sein.

Zum Beispiel kann der zusammengesetzte Index {make: 1, year: 1} mit "sort({make: 1, year: 1})" sortiert werden, aber nicht auf "sort({year: 1, make: 1})". Das Sortieren mit einem Index hilft, den Ressourcenbedarf bei der Abfrage zu reduzieren.

Mit der Sammlung "vehicleslaes" definieren wir einen Index namens "make_index"

Ergebnis:

    db.vehiclesales.find({},{_id:0}).sort({make_index: 1})

Ergebnis:

Hier wird der Index "make_index" verwendet, um die Dokumente zu sortieren. Um zu bestimmen, welcher Index verwendet wird, fügen wir die Methode explain() am Ende der Abfrage an, was zu folgender Ausgabe führt. Aus der Ausgabe können wir erkennen, dass das "make_index" verwendet wird, um die relevanten Dokumente abzurufen.

Ergebnis:

    db.vehiclesales.find({},{_id:0}).sort({make: 1}).explain()

Ergebnis:

Schließlich wird die Abfrage ohne die explain()- Methode ausgeführt, um die Ausgabe zu erhalten.

Ergebnis:

    db.vehiclesales.find({},{_id:0}).sort({make: 1})

Ergebnis:

Das war das Ende unseres MongoDB-Sortier-Tutorials.

Verwandte Literatur

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.