Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
$ rang
Nouveau depuis la version 8.0.2.
L'opérateur de $rank fenêtre d'Amazon DocumentDB renvoie la position de chaque document au sein de sa partition, conformément à l'sortByordre des $setWindowFields étapes. Les documents ayant la même sortBy valeur reçoivent le même rang, et la valeur distincte suivante ignore les positions intermédiaires, laissant des espaces (par exemple,1, 2, 2, 4). Il est spécifié dans le output champ de la $setWindowFields scène.
Il s'agit d'un opérateur de fenêtre qui n'est utilisé que dans la $setWindowFields scène.
Paramètres
-
$rankprend un document vide{}comme valeur. -
Il n'accepte pas de
windowcadre. -
Cela nécessite exactement une
sortByclé dans l'$setWindowFieldsétape.
Exemple (MongoDB Shell)
L'exemple suivant partitionne les documents pargame, trie chaque partition par score ordre décroissant et attribue un rang à chaque joueur.
Créez des exemples de documents
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 } ]);
Exemple de requête
db.players.aggregate([ { $setWindowFields: { partitionBy: "$game", sortBy: { score: -1 }, output: { rank: { $rank: {} } } } } ]);
Sortie
[
{ "_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 }
]
Au sein de chaque game partition, les joueurs sont classés par ordre décroissantscore. Bob et Carol sont à égalité 85 et se partagent le rang2, donc le rang suivant passe 4 à Dave.
Exemples de code
Pour afficher un exemple de code permettant d'utiliser l'$rankopérateur dans la $setWindowFields scène, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :