Definición
Devuelve uno o más valores percentiles calculados sobre una matriz de números.
Nota
Desambiguación
Esta página describe $percentile cuando se utiliza como una expresión que calcula valores percentiles sobre una matriz de valores de entrada.
También puedes usar $percentile en estos otros contextos:
$percentile (accumulator), que devuelve valores percentiles mediante la agregación de datos de un grupo de documentos de entrada.$percentile (window function), que se utiliza en la etapa$setWindowFieldspara devolver una matriz de valores percentiles para los documentos en una ventana en particular.
Sintaxis
{ $percentile: { input: <expression>, p: [ <expression1>, <expression2>, ... ], method: <string> } }
opciones
Campo | Tipo | Descripción |
|---|---|---|
| Arreglo | Puede ser cualquiera de las dos:
|
| expresión |
|
| String | El método que usa MongoDB para calcular el valor percentil. El método debe ser |
Comportamiento
Cuando se utiliza como expresión, $percentile siempre emplea un algoritmo de cálculo de percentiles preciso en lugar de uno aproximado, incluso cuando se especifica method: 'approximate'. Esto se debe a que las expresiones operan sobre matrices de tamaño limitado, donde es aceptable mantener todos los valores de entrada en memoria.
Ejemplo
Cree una colección 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 ] } ] )
El siguiente proceso utiliza $percentile para calcular las puntuaciones de las pruebas del percentil 25, 50 y 75 para cada estudiante:
db.testScores.aggregate( [ { $project: { _id: 0, studentId: 1, testPercentiles: { $percentile: { input: "$scores", p: [ 0.25, 0.5, 0.75 ], method: 'approximate' } } } } ] )
En la secuencia anterior, $project con $percentile calcula el percentil 25, 50 y 75 de la matriz scores de cada estudiante y los devuelve como testPercentiles.