Definición
$medianNuevo en la versión 7.0.
Devuelve una aproximación del valor mediano (percentil 50) de los documentos en 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 a partir de un grupo de documentos de entrada.
También puedes usar $median en estos otros contextos:
$median (expression), que devuelve la mediana de una matriz de valores dentro de un solo documento.$median (window function), que se utiliza en la etapa$setWindowFieldspara devolver el valor mediano de los documentos en 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 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 acumulador, $median siempre emplea un algoritmo de aproximación. Por consiguiente, los percentiles calculados que $median devuelve sobre el mismo conjunto de datos pueden variar en cada ejecución, debido a la pseudoaleatoriedad del algoritmo de aproximación t-digest. Además, $median puede devolver un valor que difiere ligeramente de la mediana estadÃstica real.
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 su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.
El siguiente ejemplo utiliza $median para calcular la calificación mediana de IMDb de las pelÃculas de acción por año desde 2000 hasta 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:
$matchFiltros para pelÃculas de acción estrenadas entre 2000 y 2004 con una calificación válida de IMDb.$groupagrupa los documentos poryeary utiliza$medianpara calcular la medianaimdb.ratingde todas las pelÃculas de acción de cada año.$sortordena los resultados por año en orden ascendente.