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

$max (função de janela)

$max

Retorna o valor máximo de documentos em uma janela específica.

Observação

Desambiguação

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

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

  • $max (accumulator), que retorna o valor máximo em um grupo de documentos de entrada.

  • $max (expression), que retorna o valor máximo de uma array ou de uma lista de valores.

{
$setWindowFields: {
...
output: {
<field>: {
$max: <expression>
}
}
}
}

$max compara dados de entrada seguindo a ordem de Comparação BSON para determinar o tipo de saída apropriado. Quando os dados de entrada contêm vários tipos de dados, o tipo de saída $max é o mais alto na ordem de comparação.

Se alguns, mas não todos, documentos na janela tiverem um valor null para o campo ou estiverem faltando o campo, $min os ignorará. Considera apenas os valores não nulos e não ausentes.

Se todos os documentos na janela tiverem um valor null para o campo ou estiverem faltando o campo, $min retornará null.

No estágio $setWindowFields, se a expressão se resolver em uma array, $max não percorrerá a array e compara a array como um todo.

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 $max no estágio $setWindowFields para gerar a classificação mais alta do IMDb para filmes bem avaliados em 1999 e 2000. Para cada filme, o pipeline adiciona um campo contendo a classificação mais alta do IMDb em todos os filmes daquele ano:

db.movies.aggregate( [
{
$match: {
year: { $in: [ 1999, 2000 ] },
"imdb.rating": { $gte: 8.5 }
}
},
{
$setWindowFields: {
partitionBy: "$year",
sortBy: { "imdb.rating": 1 },
output: {
highestRatingInYear: {
$max: "$imdb.rating",
window: {
documents: [ "unbounded", "unbounded" ]
}
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
"imdb.rating": 1,
highestRatingInYear: 1
}
},
{ $sort: { year: 1, "imdb.rating": 1 } }
] )

No pipeline anterior:

  • $match filtros para filmes de 1999 e 2000 com uma classificação da IMDb de 8.5 ou superior.

  • $setWindowFields divide os filmes por year e os classifica por imdb.rating em ordem crescente dentro de cada partição. A função de janela $max usa uma janela de documentos com limites inferior e superior unbounded, abrangendo toda a partição. $max retorna o imdb.rating mais alto em todos os documentos na partição de cada ano.

  • $project limita a saída a title, year, imdb.rating e o campohighestRatingInYear computado.

  • $sort ordena os resultados por ano e, em seguida, por classificação do IMDb em ordem crescente.