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.
$ Dichter Rang
Neu ab Version 8.0.2.
Der $denseRank 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 der nächste eindeutige Wert verwendet die unmittelbar darauf folgende Position, ohne Lücken zu hinterlassen (z. B.1, 2, 2, 3). Sie wird unter dem output Feld der $setWindowFields Stufe angegeben.
Es ist ein Fensteroperator, der nur auf der $setWindowFields Bühne verwendet wird.
Parameter
-
$denseRanknimmt 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 danach und weist jedem Spieler einen hohen 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: { denseRank: { $denseRank: {} } } } } ]);
Ausgabe
[
{ "_id": 1, "game": "A", "player": "Alice", "score": 90, "denseRank": 1 },
{ "_id": 2, "game": "A", "player": "Bob", "score": 85, "denseRank": 2 },
{ "_id": 3, "game": "A", "player": "Carol", "score": 85, "denseRank": 2 },
{ "_id": 4, "game": "A", "player": "Dave", "score": 70, "denseRank": 3 },
{ "_id": 5, "game": "B", "player": "Erin", "score": 95, "denseRank": 1 },
{ "_id": 6, "game": "B", "player": "Frank", "score": 80, "denseRank": 2 }
]
Innerhalb jeder game Partition werden die Spieler absteigend sortiertscore. Bob und Carol liegen gleichauf 85 und teilen sich den Rang2, und Dave folgt auf Rang 3 ohne Lücke.
Codebeispiele
Um ein Codebeispiel für die Verwendung des $denseRank Operators in der $setWindowFields Phase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten: