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

$median (operador acumulador )

$median

Novidades 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: {
input: <number>,
method: <string>
}
}

$percentile usa os seguintes campos:

Campo
Tipo
necessidade
Descrição

input

Expressão

Obrigatório

$percentile calcula o 50º percentil sobre os valores retornados por esta expressão. 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.

method

String

Obrigatório

O método que o mongod utiliza para calcular o valor do percentil nº 50. O método deve ser 'approximate'.

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.

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.

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:

  • $match filtro para filmes de ação lançados entre 2000 e 2004 com uma classificação IMDb válida.

  • $group agrupa documentos por year e usa $median para calcular a mediana imdb.rating em todos os filmes de ação de cada ano.

  • $sort classifica os resultados por ano em ordem crescente.