Definición
$medianNuevo en la versión 7.0.
Devuelve la mediana (percentil 50) de una matriz de valores numéricos.
Nota
Desambiguación
Esta página describe $median cuando se utiliza como una expresión que calcula la mediana de una matriz de valores.
También puedes usar $median en estos otros contextos:
$median (accumulator), utilizado en la agrupación para devolver el valor medio de un grupo de documentos de entrada.$median (window function), utilizado en la etapa$setWindowFieldspara devolver el valor mediano de los documentos en una ventana.
Sintaxis
{ $median: { input: <expression>, method: <string> } }
Campos de comandos
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| Arreglo | Requerido | Puede ser cualquiera de las dos:
|
| String | Requerido | El método que usa MongoDB para calcular el valor mediano. El método debe ser |
Comportamiento
Cuando $median se usa como expresión, siempre usa un algoritmo de cálculo de percentil 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 la memoria.
Ejemplo
El siguiente ejemplo utiliza una colección testScores para demostrar el formato de entrada de matriz de $median.
Crear la 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 $median para calcular la puntuación media de la prueba para cada estudiante:
db.testScores.aggregate( [ { $project: { _id: 0, studentId: 1, testMedians: { $median: { input: "$scores", method: 'approximate' } } } } ] )
En el pipeline anterior:
$projectcon$medianencuentra el valor mediano en el arrayscorespara cada documento y lo devuelve comotestMedians.Cada resultado refleja la puntuación media obtenida en todas las pruebas registradas por ese estudiante.