Definição
$medianNovidades na versão 7.0.
Retorna uma aproximação do valor da mediana (50º percentil) dos documentos em um grupo.
O acumulador $median está disponível nestes estágios:
Observação
Desambiguação
Esta página descreve $median quando usado como um acumulador. Acumuladores retornam um valor agregado em um grupo de documentos de entrada.
Você também pode usar $median nestes outros contextos:
$median (expression), que retorna a mediana de um array de valores dentro de um único documento.$median (window function), que é usado no$setWindowFieldsestágio para retornar o valor da mediana de documentos em uma janela.
Sintaxe
{ $median: { input: <number>, method: <string> } }
Campos de comando
$percentile usa os seguintes campos:
Campo | Tipo | necessidade | Descrição |
|---|---|---|---|
| Expressão | Obrigatório |
|
| String | Obrigatório | O método que o |
Comportamento
Quando usado como acumulador, $median:
Calcula um único resultado para todos os documentos no grupo.
Usa o algoritmo t-digest para o cálculo de percentis aproximados. A aproximação é necessária para calcular a mediana usando uma estrutura de dados de tamanho limitado.
Considerações de cálculo
Quando usado como acumulador, $median sempre usa um algoritmo de aproximação. Como resultado, os percentis calculados que $median retorna no mesmo conjunto de dados podem diferir em cada executar, devido à pseudorandomicidade no algoritmo de aproximação t-digest. Além disso, $median pode retornar um valor que difere ligeiramente da verdadeira mediana estatística.
Exemplo
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 $median para calcular a classificação mediana do IMDb de filmes de ação por ano de 2000 a 2004:
db.movies.aggregate( [ { $match: { genres: "Action", year: { $gte: 2000, $lte: 2004 }, "imdb.rating": { $gt: 0 } } }, { $group: { _id: "$year", medianRating: { $median: { input: "$imdb.rating", method: "approximate" } } } }, { $sort: { _id: 1 } } ] )
No pipeline anterior: