Definición
$medianNuevo en la versión 7.0.
Devuelve una aproximación del valor mediana (50º percentil) de los documentos de un grupo.
El acumulador $median está disponible en estas etapas:
Nota
Desambiguación
Esta página describe $median cuando se utiliza como acumulador. Los acumuladores devuelven un valor agregado en un grupo de documentos de entrada.
También puede usar $median en estos otros contextos:
$median (expression), que devuelve la mediana de un arreglo de valores dentro de un único documento.$median (window function), que se utiliza en la$setWindowFieldsetapa para devolver el valor de la mediana de los documentos de una ventana.
Sintaxis
{ $median: { input: <number>, method: <string> } }
Campos de comandos
$percentile requiere los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| expresión | Requerido |
|
| String | Requerido | El método que |
Comportamiento
Cuando se utiliza como un acumulador, $median:
Calcula un único resultado para todos los documentos del grupo.
Utiliza el algoritmo t-digest para el cálculo de percentiles aproximados. La aproximación es necesaria para calcular la mediana utilizando una estructura de datos de tamaño limitado.
Consideraciones de cálculo
Cuando se utiliza como un acumulador, $median siempre utiliza un algoritmo de aproximación. Como resultado, los percentiles calculados que $median devuelve en el mismo conjunto de datos podrían diferir en cada ejecución, debido a la pseudorandomidad en el algoritmo de aproximación t-digest. Adicionalmente, $median puede devolver un valor que difiere ligeramente de la verdadera mediana estadística.
Ejemplo
Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si realizó alguna modificación en las bases de datos de muestra, es posible que deba descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.
El siguiente ejemplo utiliza $median para calcular la mediana de la calificación de IMDb de las películas de acción por año de 2000 a 2004:
db.movies.aggregate( [ { $match: { genres: "Action", year: { $gte: 2000, $lte: 2004 }, "imdb.rating": { $gt: 0 } } }, { $group: { _id: "$year", medianRating: { $median: { input: "$imdb.rating", method: "approximate" } } } }, { $sort: { _id: 1 } } ] )
En el pipeline anterior: