Definição
$medianNovidades na versão 7.0.
Retorna uma aproximação da mediana (50º percentil) de documentos em um grupo.
O acumulador $median está disponível nos seguintes estágios:
Observação
Desambiguação
Esta página descreve $median quando usado como acumulador. Os 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 uma array de valores dentro de um único documento.$median (window function), que é usado no estágio$setWindowFieldspara retornar o valor mediano dos 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 utilizado como acumulador, $median:
Calcula um único resultado para todos os documentos no grupo.
Usa o algoritmo t-digest para 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 utilizado como acumulador, o $median sempre utiliza um algoritmo de aproximação. Como resultado, os retornos $median dos percentis calculados no mesmo conjunto de dados podem diferir em cada execução, devido à pseudo-aleatório 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 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 $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: