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 (expressão)

$percentile

Retorna um ou mais valores de percentil calculados sobre uma array de números.

Observação

Desambiguação

Esta página descreve $percentile quando usado como uma expressão, que calcula valores de percentil em uma array de valores de entrada.

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

{
$percentile: {
input: <expression>,
p: [ <expression1>, <expression2>, ... ],
method: <string>
}
}
Campo
Tipo
Descrição

input

Array

Pode ser um dos seguintes:

  • Uma expressão que se torna uma array. Por exemplo , $scores, onde o campo de documento $scores contém uma array de valores numéricos.

  • Uma array de expressões, cada uma das quais avalia para um valor numérico. Por exemplo, [ "$field1", "$field2", "$field3" ].

$percentile calcula valores de percentil em todos os valores numéricos na array. Valores não numéricos são ignorados.

p

Expressão

$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

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

Quando usado como expressão, $percentile sempre usa um algoritmo de cálculo de percentil preciso em vez de um aproximado, mesmo quando method: 'approximate' é especificado. Isso ocorre porque as expressões operam em arrays de tamanho limitado, onde é aceitável manter todos os valores de entrada na memória.

Crie uma coleção testScores:

db.testScores.insertMany( [
{ studentId: "2345", scores: [ 62, 81, 80, 75, 68 ] },
{ studentId: "2356", scores: [ 60, 83, 79, 72, 65 ] },
{ studentId: "2358", scores: [ 67, 82, 78, 70, 84 ] },
{ studentId: "2367", scores: [ 64, 72, 77, 58, 91 ] },
{ studentId: "2369", scores: [ 60, 53, 72, 85, 63 ] }
] )

O pipeline a seguir usa $percentile para calcular as pontuações dos testes de percentil 25º, 50º e 75º para cada aluno:

db.testScores.aggregate( [
{
$project: {
_id: 0,
studentId: 1,
testPercentiles: {
$percentile: {
input: "$scores",
p: [ 0.25, 0.5, 0.75 ],
method: 'approximate'
}
}
}
}
] )

No pipeline anterior, $project com $percentile calcula o 25º, 50º e 75º percentil da array scores de cada aluno e os retorna como testPercentiles.