As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
$denseRank
Novo na versão 8.0.2.
O operador de $denseRank janela no Amazon DocumentDB retorna a posição de cada documento em sua partição, de acordo com a sortBy ordem das $setWindowFields etapas. Documentos com o mesmo sortBy valor recebem a mesma classificação, e o próximo valor distinto usa a posição imediatamente seguinte, sem deixar lacunas (por exemplo,1, 2, 2, 3). É especificado no output campo do $setWindowFields estágio.
É um operador de janela usado somente no $setWindowFields palco.
Parâmetros
-
$denseRankusa um documento vazio{}como valor. -
Ele não aceita uma
windowmoldura. -
Isso requer exatamente uma
sortBychave no$setWindowFieldsestágio.
Exemplo (MongoDB Shell)
O exemplo a seguir divide os documentos porgame, classifica cada partição score em ordem decrescente e atribui a cada jogador uma classificação densa.
Crie documentos de amostra
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 } ]);
Exemplo de consulta
db.players.aggregate([ { $setWindowFields: { partitionBy: "$game", sortBy: { score: -1 }, output: { denseRank: { $denseRank: {} } } } } ]);
Saída
[
{ "_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 }
]
Dentro de cada game partição, os jogadores são classificados por ordem decrescentescore. Bob e Carol empatam 85 e dividem a classificação2, e Dave segue na classificação 3 sem diferença.
Exemplos de código
Para ver um exemplo de código para usar o $denseRank operador no $setWindowFields estágio, escolha a guia do idioma que você deseja usar: