Definição
Retorna um ou mais valores de percentil calculados sobre uma array de números.
Observação
Desambiguação
Esta página descreve $percentile quando usado como uma expressão, que calcula valores de percentil em uma array de valores de entrada.
Você também pode usar $percentile nestes outros contextos:
$percentile (accumulator), que retorna valores de percentil agregando em um grupo de documentos de entrada.$percentile (window function), que é usado no estágio$setWindowFieldspara retornar uma array de valores de percentil para documentos em uma janela específica.
Sintaxe
{ $percentile: { input: <expression>, p: [ <expression1>, <expression2>, ... ], method: <string> } }
Opções
Campo | Tipo | Descrição |
|---|---|---|
| Array | Pode ser um dos seguintes:
|
| Expressão |
|
| String | O método que o MongoDB usa para calcular o valor do percentil. O método deve ser |
Comportamento
Quando usado como expressão, $percentile sempre usa um algoritmo de cálculo de percentil preciso em vez de um aproximado, mesmo quando method: 'approximate' é especificado. Isso ocorre porque as expressões operam em arrays de tamanho limitado, onde é aceitável manter todos os valores de entrada na memória.
Exemplo
Crie uma coleção testScores:
db.testScores.insertMany( [ { studentId: "2345", scores: [ 62, 81, 80, 75, 68 ] }, { studentId: "2356", scores: [ 60, 83, 79, 72, 65 ] }, { studentId: "2358", scores: [ 67, 82, 78, 70, 84 ] }, { studentId: "2367", scores: [ 64, 72, 77, 58, 91 ] }, { studentId: "2369", scores: [ 60, 53, 72, 85, 63 ] } ] )
O pipeline a seguir usa $percentile para calcular as pontuações dos testes de percentil 25º, 50º e 75º para cada aluno:
db.testScores.aggregate( [ { $project: { _id: 0, studentId: 1, testPercentiles: { $percentile: { input: "$scores", p: [ 0.25, 0.5, 0.75 ], method: 'approximate' } } } } ] )
No pipeline anterior, $project com $percentile calcula o 25º, 50º e 75º percentil da array scores de cada aluno e os retorna como testPercentiles.