Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$mediana (función de ventana)

$median

Nuevo en la versión 7.0.

Devuelve el valor mediano (percentil 50) de los documentos en una ventana especificada. Puede usar $median tanto en ventanas basadas en documentos como en ventanas basadas en rangos.

Nota

Desambiguación

Esta página describe $median cuando se utiliza como función de ventana.

También puedes usar $median en estos otros contextos:

{
$setWindowFields: {
...
output: {
<field>: {
$median: {
input: <expression>,
method: <string>
}
}
}
}
}
Campo
Tipo
Necesidad
Descripción

input

expresión

Requerido

Devuelve los valores sobre los que se calcula la mediana. input debe ser una expresión que dé como resultado un número. Si la expresión no da como resultado un número, el cálculo de $median ignora ese valor.

method

String

Requerido

El método que mongod utiliza para calcular el valor mediano. El método debe ser 'approximate'.

Cuando $median se utiliza como función de ventana, siempre utiliza un algoritmo de cálculo de percentiles preciso en lugar de uno aproximado, incluso cuando se especifica method: "approximate".

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.

Este ejemplo utiliza $setWindowFields para calcular la calificación mediana de IMDb para cada película que pertenece a los tres géneros: Aventura, Comedia y Drama. El período abarca el año anterior, el mismo año y el año siguiente (rango [ -1, 1 ]):

db.movies.aggregate( [
{
$match: {
genres: { $all: ["Adventure", "Comedy", "Drama"] },
year: { $gte: 2000, $lte: 2005 }
}
},
{
$setWindowFields: {
sortBy: { year: 1 },
output: {
medianRatingByYear: {
$median: {
input: "$imdb.rating",
method: "approximate"
},
window: { range: [ -1, 1 ] }
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
genres: 1,
"imdb.rating": 1,
medianRatingByYear: 1
}
},
{ $sort: { year: 1, "imdb.rating": -1 } },
{ $limit: 10 }
] )

En el pipeline anterior:

  • $match Filtros para películas que pertenecen a los tres géneros de Aventura, Comedia y Drama, estrenadas entre 2000 y 2005.

  • $setWindowFields ordena por year en orden ascendente y aplica $median con una ventana basada en rango de [ -1, 1 ]. El medianRatingByYear de cada película es la mediana imdb.rating de las películas en los tres géneros estrenadas dentro de un año de su estreno.

  • $project incluye solo los campos title, year, genres, imdb.rating y medianRatingByYear.

  • $sort ordena los resultados por year en orden ascendente y luego por imdb.rating en orden descendente.

  • $limit Restringe la salida a los resultados 10 para mejorar la legibilidad.