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

$percentile (operador de acumulación)

$percentile

Nuevo en la versión 7.0.

Devuelve un arreglo de valores escalares que corresponden a los valores de percentil especificados.

Disponible en estas fases:

Nota

Desambiguación

Esta página describe $percentile cuando se utiliza como acumulador. Los acumuladores devuelven un valor agregado a partir de un grupo de documentos de entrada.

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

{
$percentile: {
input: <expression>,
p: [ <expression1>, <expression2>, ... ],
method: <string>
}
}

$percentile requiere los siguientes campos:

Campo
Tipo
Necesidad
Descripción

input

expresión

Requerido

$percentile Calcula los valores percentiles de estos datos. input debe ser una expresión que se evalúe como un tipo numérico. Si la expresión no se evalúa como un tipo numérico, el cálculo de $percentile ignora ese valor.

p

expresión

Requerido

$percentile Calcula un valor percentil para cada elemento en p. Estos elementos especifican los cuantiles a calcular y deben ser valores numéricos en el rango de 0.0 a 1.0, ambos inclusive.

$percentile devuelve resultados en el mismo orden que los elementos en p.

method

String

Requerido

El método que usa MongoDB para calcular el valor percentil. El método debe ser 'approximate'.

Cuando se utiliza como acumulador, $percentile:

  • Calcula un conjunto de percentiles por grupo, agregados a partir de todos los documentos del grupo.

  • Utiliza el algoritmo t-digest para el cálculo de percentiles aproximados. La aproximación es necesaria para calcular percentiles utilizando una estructura de datos de tamaño limitado.

Cuando se utiliza como acumulador, $percentile siempre emplea un algoritmo de aproximación. Debido a la pseudoaleatoriedad del algoritmo de aproximación t-digest, los valores percentiles calculados para el mismo conjunto de datos pueden variar en cada ejecución. Además, $percentile puede devolver valores que difieren ligeramente de los percentiles estadísticos reales.

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 el acumulador $percentile para calcular las calificaciones de IMDB del percentil 50 y 90 para películas de los géneros Action y Drama:

db.movies.aggregate( [
{
$unwind: "$genres"
},
{
$match: {
genres: { $in: [ "Action", "Drama" ] },
"imdb.rating": { $exists: true }
}
},
{
$group: {
_id: "$genres",
ratingPercentiles: {
$percentile: {
input: "$imdb.rating",
p: [ 0.5, 0.9 ],
method: "approximate"
}
}
}
},
{
$sort: { _id: 1 }
}
] )

La tubería precedente:

  • Utiliza $unwind para crear un documento separado para cada género en el array genres.

  • Utiliza $match para filtrar películas que se clasifican como Action o Drama y tienen un campo de calificación de IMDB.

  • Agrupa las películas por género.

  • Utiliza $percentile para calcular las calificaciones de IMDB del percentil 50 y 90 para cada género con p: [0.5, 0.9].

  • Utiliza $sort para ordenar la salida por nombre de género.

El array de salida ratingPercentiles contiene dos valores: el percentil 50 y el percentil 90 de la calificación IMDB para cada género.

Califique esta página