Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

$percentile (operador acumulador )

$percentile

Novidades na versão 7.0.

Retorna uma array de valores escalares que correspondem aos valores percentuais especificados.

Disponível nestes estágios:

Observação

Desambiguação

Esta página descreve $percentile quando usado como acumulador. Os acumuladores retornam um valor agregado em um grupo de documentos de entrada.

Você também pode usar $percentile nestes outros contextos:

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

$percentile usa os seguintes campos:

Campo
Tipo
necessidade
Descrição

input

Expressão

Obrigatório

$percentile calcula os valores de percentil destes dados. input deve ser uma expressão que avalia para um tipo numérico. Se a expressão não avaliar para um tipo numérico, o cálculo $percentile ignorará este valor.

p

Expressão

Obrigatório

$percentile calcula um valor de percentil para cada elemento no p. Esses elementos especificam os quantis a serem calculados e devem ser valores numéricos no intervalo de 0.0 a 1.0, inclusive.

$percentile retorna resultados na mesma ordem que os elementos em p.

method

String

Obrigatório

O método que o MongoDB usa para calcular o valor do percentil. O método deve ser 'approximate'.

Quando utilizado como acumulador, $percentile:

  • Calcula um conjunto de percentis por grupo, agregado em todos os documentos do grupo.

  • Usa o algoritmo t-digest para cálculo de percentis aproximados. A aproximação é necessária para calcular percentis utilizando uma estrutura de dados de tamanho limitado.

Quando utilizado como acumulador, o $percentile sempre utiliza um algoritmo de aproximação. Devido à pseudo-aleatório no algoritmo de aproximação t-digest, os valores de percentil calculados no mesmo conjunto de dados podem diferir em cada execução. Além disso, $percentile pode retornar valores que diferem ligeiramente dos verdadeiros percentis estatísticas.

Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

O exemplo a seguir usa o acumulador $percentile para calcular as classificações IMDB de 50º e 90º para filmes nos gêneros Action e 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 }
}
] )

O pipeline anterior:

  • Usa $unwind para criar um documento separado para cada gênero na array genres.

  • Usa $match para filtrar filmes classificados como Action ou Drama e que tenham um campo de classificação IMDB.

  • Agrupa filmes por gênero.

  • Usa $percentile para calcular as classificações IMDB do 50º e 90º para cada gênero com p: [0.5, 0.9].

  • Usa $sort para ordenar a saída por nome do gênero.

A array de saída ratingPercentiles contém dois valores: o 50º percentil e o 90º percentil de classificação IMDB para cada gênero.