Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
$ Rang
Neu ab Version 8.0.2.
Der $rank Fensteroperator in Amazon DocumentDB gibt die Position jedes Dokuments innerhalb seiner Partition entsprechend der Reihenfolge der $setWindowFields Phasen sortBy zurück. Dokumente mit demselben sortBy Wert erhalten denselben Rang, und beim nächsten eindeutigen Wert werden die dazwischenliegenden Positionen übersprungen, sodass Lücken entstehen (z. B.). 1, 2, 2, 4 Er wird unter dem output Feld der $setWindowFields Stufe angegeben.
Es ist ein Fensteroperator, der nur auf der $setWindowFields Bühne verwendet wird.
Parameter
-
$ranknimmt ein leeres Dokument{}als Wert an. -
Es akzeptiert keinen
windowFrame. -
Es wird genau ein
sortBySchlüssel auf der$setWindowFieldsBühne benötigt.
Beispiel (MongoDB Shell)
Das folgende Beispiel partitioniert die Dokumente nachgame, sortiert jede Partition score in absteigender Reihenfolge und weist jedem Spieler einen Rang zu.
Erstellen Sie Beispieldokumente
db.players.insertMany([ { _id: 1, game: "A", player: "Alice", score: 90 }, { _id: 2, game: "A", player: "Bob", score: 85 }, { _id: 3, game: "A", player: "Carol", score: 85 }, { _id: 4, game: "A", player: "Dave", score: 70 }, { _id: 5, game: "B", player: "Erin", score: 95 }, { _id: 6, game: "B", player: "Frank", score: 80 } ]);
Beispiel für eine Abfrage
db.players.aggregate([ { $setWindowFields: { partitionBy: "$game", sortBy: { score: -1 }, output: { rank: { $rank: {} } } } } ]);
Ausgabe
[
{ "_id": 1, "game": "A", "player": "Alice", "score": 90, "rank": 1 },
{ "_id": 2, "game": "A", "player": "Bob", "score": 85, "rank": 2 },
{ "_id": 3, "game": "A", "player": "Carol", "score": 85, "rank": 2 },
{ "_id": 4, "game": "A", "player": "Dave", "score": 70, "rank": 4 },
{ "_id": 5, "game": "B", "player": "Erin", "score": 95, "rank": 1 },
{ "_id": 6, "game": "B", "player": "Frank", "score": 80, "rank": 2 }
]
Innerhalb jeder game Partition werden die Spieler absteigend sortiertscore. Bob und Carol liegen gleichauf 85 und teilen sich den Rang2, sodass der nächste Rang an Dave übergeht. 4
Codebeispiele
Um ein Codebeispiel für die Verwendung des $rank Operators in der $setWindowFields Phase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten: