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

$median (função de janela)

$median

Novidades na versão 7.0.

Retorna o valor mediano (50º percentil) de documentos em uma janela especificada. Você pode usar $median em janelas baseadas em documentos e em intervalo.

Observação

Desambiguação

Esta página descreve $median quando usado como uma função de janela.

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

{
$setWindowFields: {
...
output: {
<field>: {
$median: {
input: <expression>,
method: <string>
}
}
}
}
}
Campo
Tipo
necessidade
Descrição

input

Expressão

Obrigatório

Retorna os valores sobre os quais a mediana é calculada. input deve ser uma expressão que avalia para um número. Se a expressão não avaliar para um número, o cálculo $median ignorará este valor.

method

String

Obrigatório

O método que mongod utiliza para calcular o valor mediano. O método deve ser 'approximate'.

Quando $median é utilizado como uma função de janela, ele sempre usa um algoritmo de cálculo de percentil preciso em vez de um aproximado, mesmo quando method: "approximate" é especificado.

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.

Este exemplo usa $setWindowFields para calcular a classificação mediana do IMDb para cada filme que pertence a todos os três gêneros História, Comédia e Séries de Ação. A janela abrange o ano anterior, o mesmo ano e o ano seguinte (faixa [ -1, 1 ]):

db.movies.aggregate( [
{
$match: {
genres: { $all: ["Adventure", "Comedy", "Drama"] },
year: { $gte: 2000, $lte: 2005 }
}
},
{
$setWindowFields: {
sortBy: { year: 1 },
output: {
medianRatingByYear: {
$median: {
input: "$imdb.rating",
method: "approximate"
},
window: { range: [ -1, 1 ] }
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
genres: 1,
"imdb.rating": 1,
medianRatingByYear: 1
}
},
{ $sort: { year: 1, "imdb.rating": -1 } },
{ $limit: 10 }
] )

No pipeline anterior:

  • $match filtros para filmes que pertencem a todos os três gêneros de História, Comédia e Séries, lançados entre 2000 e 2005.

  • $setWindowFields classifica por year em ordem crescente e aplica $median com uma janela baseada em intervalo de [ -1, 1 ]. O medianRatingByYear de cada filme é a mediana de imdb.rating de filmes em todos os três gêneros lançados dentro de um ano depois.

  • $project inclui apenas os campos title, year, genres, imdb.rating e medianRatingByYear.

  • $sort classifica os resultados por year em ordem crescente e, em seguida, por imdb.rating em ordem decrescente.

  • $limit restringe a saída a resultados 10 para melhorar a legibilidade.