Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
$rank
Nuevo a partir de la versión 8.0.2.
El operador de $rank ventanas de Amazon DocumentDB devuelve la posición de cada documento dentro de su partición, según el orden de las $setWindowFields etapassortBy. Los documentos con el mismo sortBy valor reciben la misma clasificación, y el siguiente valor distinto omite las posiciones intermedias, dejando espacios en blanco (por ejemplo,). 1, 2, 2, 4 Se especifica en el output campo del $setWindowFields escenario.
Es un operador de ventana que se usa solo en el $setWindowFields escenario.
Parámetros
-
$ranktoma{}como valor un documento vacío. -
No acepta
windowmarcos. -
Se necesita exactamente una
sortBytecla en el$setWindowFieldsescenario.
Ejemplo (MongoDB Shell)
En el ejemplo siguiente se dividen los documentosgame, se ordenan las particiones score en orden descendente y se asigna un rango a cada jugador.
Crea documentos de muestra
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 } ]);
Ejemplo de consulta
db.players.aggregate([ { $setWindowFields: { partitionBy: "$game", sortBy: { score: -1 }, output: { rank: { $rank: {} } } } } ]);
Salida
[
{ "_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 }
]
Dentro de cada game partición, los jugadores se clasifican de forma descendente. score Bob y Carol empatan 85 y comparten rango2, por lo que el siguiente rango pasa a ser 4 para Dave.
Ejemplos de código
Para ver un ejemplo de código sobre el uso del $rank operador en el $setWindowFields escenario, elija la pestaña correspondiente al idioma que desee utilizar: