Definição
$medianNovidades na versão 7.0.
Retorna a mediana (50º percentil) de uma matriz de valores numéricos.
Observação
Desambiguação
Esta página descreve $median quando usado como uma expressão, que calcula a mediana de uma array de valores.
Você também pode usar $median nestes outros contextos:
$median (accumulator), usado em agrupamento para retornar o valor mediano em um grupo de documentos de entrada.$median (window function), usado no estágio$setWindowFieldspara retornar o valor mediano dos documentos em uma janela.
Sintaxe
{ $median: { input: <expression>, method: <string> } }
Campos de comando
Campo | Tipo | necessidade | Descrição |
|---|---|---|---|
| Array | Obrigatório | Pode ser um dos seguintes:
|
| String | Obrigatório | O método que o MongoDB usa para calcular o valor mediano. O método deve ser |
Comportamento
Quando $median é utilizado como uma expressão, ele 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.
Exemplo
O exemplo a seguir utiliza uma coleção testScores para demonstrar a forma de entrada de array de $median.
Crie a 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 $median para calcular a pontuação mediana do teste para cada aluno:
db.testScores.aggregate( [ { $project: { _id: 0, studentId: 1, testMedians: { $median: { input: "$scores", method: 'approximate' } } } } ] )
No pipeline anterior:
$projectcom$medianlocaliza o valor mediano na arrayscorespara cada documento e o retorna comotestMedians.Cada resultado reflete a pontuação média nas pontuações dos testes registrados do aluno.