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.
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 um acumulador. 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 for avaliada como um tipo numérico, o cálculo $percentile ignorará esse 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 na faixa 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 utiliza para calcular o valor do percentil. O método deve ser 'approximate'.

Quando usado como acumulador, $percentile:

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

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

Quando usado como acumulador, $percentile sempre usa um algoritmo de aproximação. Devido à pseudorandomicidade 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ísticos.

Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar este conjunto de dados em sua implantação do MongoDB autogerenciado, consulte Carregar o conjunto de dados de amostra. Se você fez alguma modificação 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 o 50º e o 90º percentil das classificações IMDB para filmes dos 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 no array genres.

  • Usa $match para filtro filmes que são classificados como Action ou Drama e têm um campo de classificação IMDB.

  • Agrupa filmes por gênero.

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

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

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