MongoDB $ Rank

MongoDB $ Rank
Jedes Dokument in einer Sammlung erhält den $ Rank -Betreiber in MongoDB nach einer Reihe von Sortierregeln einen deutlichen Rang. Der Rang wird durch die Abfolge der Datensätze im Ergebnissatz bestimmt. Es wird zusammen mit dem Operation $ setWindowfields verwendet, um ein neues Feld mit dem bereitgestellten Rang für jeden Datensatz hinzuzufügen. Dies macht es einfach, Dokumente nach bestimmten Standards wie Punktzahlen zu bewerten, und ist hilfreich für Aktivitäten wie die Erstellung von Bestenlisten oder die Erstellung von Leistungsberichten.

Wenn Sie als Beispiel eine Sammlung von Testergebnissen verwenden, können Sie den $ Rank -Betreiber einsetzen, um die Teilnehmer gemäß ihren Testergebnissen zu bewerten. Sie können diesen Rang dann in nachfolgenden Berechnungen oder Abfragen anwenden. Es ist signifikant. Dieser Leitfaden hilft Ihnen, eine Vorstellung über die Verwendung des Rangbetreibers in MongoDB zu bekommen.

Erstellen Sie die MongoDB -Sammlung

Bevor wir zum Thema springen, sollten wir eine Umgebung schaffen, an der wir arbeiten können, um daran zu arbeiten. Daher haben wir die MongoDB -Datenbank auf unserem Computer bereits installiert und konfiguriert. Der folgende Befehl wird in der MongoDB -Befehlszeilenschnittstelle ausgeführt. Das "Test" vor dem Symbol ">" zeigt an, dass der Anweisungen in der Datenbank "Test" ausgeführt wird. Der Befehl, der ausgeführt wird, lautet „DB.CreateCollection ("Ergebnis") ". Dieser Befehl erstellt eine neue Sammlung in der Datenbank "Test" mit dem Namen "Ergebnis" mit dem Namen "Ergebnis". Die angegebene Antwort lautet "OK: 1". Dies weist darauf hin, dass der Befehl erfolgreich war und das Sammlung „Ergebnis“ erfolgreich erstellt wurde. "Test" ist der Name der verwendeten Datenbank.

Test> db.CreateCollection ("Ergebnis")
OK: 1

Einlegen Sie den Datensatz zur Sammlung ein

Obwohl wir eine neue Sammlung erstellt haben, ist sie immer noch leer. Wir müssen mindestens 2 Datensätze in einem Sammlung „Ergebnis“ haben, um den Rangbetreiber darauf anzuwenden. Der folgende Code fügt mehrere Dokumente in eine Sammlung mit dem Namen „Ergebnis“ in einer MongoDB -Datenbank ein. Jeder Rekord deckt zwei Felder ab, "std" und "Score". Das Feld „STD“ repräsentiert den Namen eines Schülers, und das Feld „Score“ repräsentiert ihre Punktzahl bei einem Test. Der Code findet insgesamt 15 Dokumente ein, wobei jedes Dokument einen anderen Schüler und deren jeweilige Punktzahl darstellt.

Jedes Dokument wird durch ein Komma getrennt und in lockige Klammern eingeschlossen . Die Punktzahlen reichen von -2 bis 99 und die Namen der Studenten sind Nina, Johny, Eden, Robert und Lia. Jeder Schüler hat mindestens 2 Punkte, die für 2 verschiedene Fächer verwendet werden. Die Einführung dieser Dokumente wird von der Datenbank bestätigt und der Code gibt eine Liste der eindeutigen Kennungen (ObjektIDs) für jedes Dokument zurück.

Test> db.Ergebnis.InsertMany ([Std: "Nina", Score: 56, std: "Johny", Score: 77, std: "Eden", Score: 32, Std: "Robert", Score: 96 , std: "lia", Score: 12, std: "nina", punkt: 76, std: "johny", punkt: 87, std: "eden", Score: 52, STD: "Robert", Punktzahl: 99, std: "lia", Score: 42, std: "nina", Score: 32, std: "Johny", Score: 67, Std: "Eden", Score: 42, std: "Robert", Punktzahl: 89, std: "lia", Score: -2])
Anerkannt: wahr,
InsertDIDs:
'0': ObjectID ("63CD0BB2F114CB71B42E38E5"),
'1': ObjectID ("63CD0BB2F114CB71B42E38E6"),
'2': ObjectID ("63CD0BB2F114CB71B42E38E7"),
'3': ObjectID ("63CD0BB2F114CB71B42E38E8"),
'4': ObjectID ("63CD0BB2F114CB71B42E38E9"),
'5': ObjectID ("63CD0C1BF114CB71B42E38EA"),
'6': ObjectID ("63CD0C1BF114CB71B42E38EB"),
'7': ObjectID ("63CD0C1BF114CB71B42E38EC"),
'8': ObjectID ("63CD0C1BF114CB71B42E38ED"),
'9': ObjectID ("63CD0C1BF114CB71B42E38EE"),
'10': ObjectID ("63CD0CD6F114CB71B42E38EF"),
'11': ObjectID ("63CD0CD6F114CB71B42E38F0"),
'12': ObjectID ("63CD0CD6F114CB71B42E38F1"),
'13': ObjectID ("63CD0CD6F114CB71B42E38F2"),
'14': ObjectID ("63CD0CD6F114CB71B42E38F3")

MongoDB -Datensätze anzeigen

Nachdem wir die 15 Datensätze in der Sammlung „Ergebnis“ erfolgreich eingefügt haben, werden wir uns erneut mit allen Aufzeichnungen ansehen. Dazu wurde der von uns verwendete Befehl unten beigefügt. In dieser Abfrage wird die Methode Find () verwendet, um alle Dokumente in einer Sammlung mit dem Namen "Ergebnis" abzurufen. Die Methode Find () wird verwendet, um ein Array von Dokumenten in das Sammlung „Ergebnis“ zurückzugeben, das der angegebenen Abfrage entspricht. In diesem Fall wird keine Anfrage angegeben. Alle 15 Dokumente in der Sammlung „Ergebnis“ werden zurückgegeben. Die Ausgabedokumente enthalten drei Felder: _id, STD und Punktzahl. Das Feld _id ist eine eindeutige Kennung, die jedem Dokument von MongoDB zugewiesen wird, das STD -Feld enthält den Namen des Schüler.

Test> db.Ergebnis.finden()
[
_id: ObjectID ("63CD0BB2F114CB71B42E38E5"), STD: 'Nina', Score: 56,
_id: ObjectID ("63CD0BB2F114CB71B42E38E6"), STD: 'Johny', Score: 77,
_id: ObjectID ("63CD0BB2F114CB71B42E38E7"), STD: 'Eden', Score: 32,
_id: ObjectID ("63CD0BB2F114CB71B42E38E8"), STD: 'Robert', Score: 96,
_id: ObjectID ("63CD0BB2F114CB71B42E38E9"), STD: 'LIA', Score: 12
_id: ObjectID ("63CD0C1BF114CB71B42E38EA"), STD: 'Nina', Score: 76,
_id: ObjectID ("63CD0C1BF114CB71B42E38EB"), STD: 'Johny', Score: 87,
_id: ObjectID ("63CD0C1BF114CB71B42E38EC"), STD: 'Eden', Score: 52,
_id: ObjectID ("63CD0C1BF114CB71B42E38ED"), STD: 'Robert', Score: 99,
_id: ObjectID ("63CD0C1BF114CB71B42E38EE"), STD: 'LIA', Score: 42
_id: ObjectID ("63CD0CD6F114CB71B42E38EF"), STD: 'Nina', Score: 32,
_id: ObjectID ("63CD0CD6F114CB71B42E38F0"), STD: 'Johny', Score: 67,
_id: ObjectID ("63CD0CD6F114CB71B42E38F1"), STD: 'Eden', Score: 42,
_id: ObjectID ("63CD0CD6F114CB71B42E38F2"), STD: 'Robert', Score: 89,
oder
]

Beispiel Nr. 01: Rang in absteigender Reihenfolge

In diesem Befehl wird die Aggregate () -Methode verwendet, um einen Aggregationsvorgang in einer Sammlung mit dem Namen „Ergebnis“ in einer MongoDB -Datenbank durchzuführen. Die Aggregate () -Methode nimmt ein Array als Argument an, wobei jede Stufe die Daten verändert. In diesem Fall verwendet die erste Stufe der Pipeline den $ setWindowfields-Operator, in dem die Fensterfelder festgelegt werden, indem die Dokumente nach dem Feld „STD“ verteilt werden und die Dokumente nach dem Feld „Score“ in absteigender Reihenfolge (-1) sortiert werden (-1). Anschließend wird das Ausgangsfeld angegeben, in dem ein neues Feld namens „RANKSCOREFORSTD“ erstellt wird und jedem Dokument innerhalb seines Fensters mit dem $ Rank -Operator einen Rang zuweist.

Die endgültige Ausgabe zeigt die Dokumente in der Sammlung „Ergebnis“ mit dem zusätzlichen Feld „RANKSCOREFORSTD“, das jedem Dokument hinzugefügt wurde, und zeigt den Rang des Schülers anhand ihrer Punktzahl an. Die Aufzeichnungen werden in absteigender Reihenfolge der Punktzahl sortiert und mit dem Schülernamen gruppiert. In diesem Fall stellt das Skript die Schüler anhand ihrer Punktzahlen ein. Der Student mit der höchsten Punktzahl erhält einen Rang von 1, der Student mit der zweithöchsten Punktzahl von 2 und so weiter.

Test> db.Ergebnis.Aggregate ([$ setWindowfields: partitionby: "$ std", sortby: Score: -1, Ausgabe: ranksCoreForstd: $ rank: ])
[
oder,
_id: ObjectID ("63CD0CD6F114CB71B42E38F1"), STD: 'Eden', Score: 42, RANKSCOREFORSTD: 2,
oder,
_id: ObjectID ("63CD0C1BF114CB71B42E38EB"), STD: 'Johny', Score: 87, RANKSCOREFORSTD: 1,
_id: ObjectID ("63CD0BB2F114CB71B42E38E6"), STD: 'Johny', Score: 77, RANKSCOREFORSTD: 2,
_id: ObjectID ("63CD0CD6F114CB71B42E38F0"), STD: 'Johny', Score: 67, RANKSCOREFORSTD: 3,
_id: ObjectID ("63CD0C1BF114CB71B42E38EE"), STD: 'LIA', Score: 42, RANKSCOREFORSTD: 1,
_id: ObjectID ("63CD0BB2F114CB71B42E38E9"), STD: 'LIA', Score: 12, RANKSCOREFORSTD: 2,
oder,
_id: ObjectID ("63CD0C1BF114CB71B42E38EA"), STD: 'Nina', Score: 76, RANKSCOREFORSTD: 1,
_id: ObjectID ("63CD0BB2F114CB71B42E38E5"), STD: 'Nina', Score: 56, RANKSCOREFORSTD: 2,
_id: ObjectID ("63CD0CD6F114CB71B42E38EF"), STD: 'Nina', Score: 32, RANKSCOREFORSTD: 3,
oder,
_id: ObjectID ("63CD0BB2F114CB71B42E38E8"), STD: 'Robert', Score: 96, RANKSCOREFORSTD: 2,
_id: ObjectID ("63CD0CD6F114CB71B42E38F2"), STD: 'Robert', Score: 89, RANKSCOREFORSTD: 3
]

Beispiel Nr. 02: Rang in aufsteigender Reihenfolge

In der obigen Abbildung haben wir die Dokumente in absteigender Reihenfolge des Bewertungsfeldes unter Verwendung des Punktzahlwerts "-1" eingestuft. Dieses Mal werden wir einen Rangvorgang in allen Dokumenten in aufsteigender Reihenfolge des Feldfelds durchführen. Zu diesem Zweck gibt es im selben Aggregatbefehl eine geringe Änderung, beginnend mit der Aggregate () -Methode, mit der Daten verarbeitet und das Ergebnis in Form eines oder mehrerer Dokumente zurückgegeben werden.

Der $ setWindowfields -Operator wird verwendet, um jedem Dokument ein neues Feld basierend auf der angegebenen Fensterfunktion hinzuzufügen. Der Befehl besteht weist jedem Dokument einen Rang zu, der auf der Punktzahl basiert. Die Ausgabe zeigt ein Array aller Dokumente in der Sammlung „Ergebnis“ mit einem zusätzlichen Feld „RANKSCOREFORSTD“ für jedes Dokument. In diesem Fall wird jedem Schüler ein eindeutiger Rang zugewiesen und die Dokumente werden in aufsteigender Reihenfolge der Punktzahl sortiert.

Test> db.Ergebnis.Aggregate ([$ setWindowfields: partitionby: "$ std", sortby: Score: 1, Ausgabe: ranksCoreForstd: $ rank: ])
[
oder,
_id: ObjectID ("63CD0CD6F114CB71B42E38F1"), STD: 'Eden', Score: 42, RANKSCOREFORSTD: 2,
_id: ObjectID ("63CD0BB2F114CB71B42E38E7"), STD: 'Eden', Score: 52, RANKSCOREFORSTD: 3,
_id: ObjectID ("63CD0C1BF114CB71B42E38EB"), STD: 'Johny', Score: 67, RANKSCOREFORSTD: 1,
_id: ObjectID ("63CD0BB2F114CB71B42E38E6"), STD: 'Johny', Score: 77, RANKSCOREFORSTD: 2,
_id: ObjectID ("63CD0CD6F114CB71B42E38F0"), STD: 'Johny', Score: 87, RANKSCOREFORSTD: 3,
oder,
_id: ObjectID ("63CD0BB2F114CB71B42E38E9"), STD: 'LIA', Score: 12, RANKSCOREFORSTD: 2,
oder,
_id: ObjectID ("63CD0C1BF114CB71B42E38EA"), STD: 'Nina', Score: 26, RANKSCOREFORSTD: 1,
_id: ObjectID ("63CD0BB2F114CB71B42E38E5"), STD: 'Nina', Score: 56, RANKSCOREFORSTD: 2,
_id: ObjectID ("63CD0CD6F114CB71B42E38EF"), STD: 'Nina', Score: 76, RANKSCOREFORSTD: 3,
_id: ObjectID ("63CD0C1BF114CB71B42E38ED"), STD: 'Robert', Score: 89, RANKSCOREFORSTD: 1,
_id: ObjectID ("63CD0BB2F114CB71B42E38E8"), STD: 'Robert', Score: 96, RANKSCOREFORSTD: 2,
_id: ObjectID ("63CD0CD6F114CB71B42E38F2"), STD: 'Robert', Score: 99, RANKSCOREFORSTD: 3
]

Abschluss

Nachdem wir den MongoDB -Rangbetreiber eingeführt hatten, diskutierten wir seine Verwendung in MongoDB. Danach haben wir eine Umgebung geschaffen, an der wir arbeiten und MongoDB -Beispiele hinzugefügt haben, um die Verwendung des Rangbetreibers genauer zu veranschaulichen. Das erste Beispiel zeigt die Verwendung des Rangbetreibers mit dem Wert „-1“, um die Dokumente in absteigender Reihenfolge anzuzeigen. Während das zweite Beispiel seine Verwendung mit dem Wert „1“ abdeckt, um die Dokumente in der Aufstieg der Sammlung anzuzeigen und zu bewerten.