Definição
Retorna o valor máximo de uma array.
Observação
Desambiguação
Esta página descreve $max quando usado como uma expressão, que retorna o valor máximo de uma array ou de uma lista de valores.
Você também pode usar $max nestes outros contextos:
$max (accumulator), que retorna um único valor agregado com base em um número variável de documentos de entrada.$max (window function), que é usado no estágio$setWindowFieldspara retornar o valor máximo dos documentos em uma janela específica.
Sintaxe
{ $max: <expression> }
O expression deve avaliar para uma array.
Comportamento
Tipo de resultado
$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.
Valores nulos e ausentes
Se alguns, mas não todos, valores de entrada para $max estiverem null ou ausentes, $max considerará apenas os valores não nulos e não ausentes.
Se todos os valores de entrada para $max estiverem null ou ausentes, $max retornará null.
Operando de array
Com uma única expressão como operando, se a expressão for resolvida para uma array, $max percorrerá a array para encontrar o valor máximo.
Com uma lista de expressões como operando, se alguma expressão for resolvida para uma array, $max não percorrerá essa array e, em vez disso, compara a array como um todo.
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 $max no estágio $project para encontrar a classificação mais alta para cada filme em três fontes de classificação: IMDb, visualizador do Rotten Tomatoes e crítico do Rotten Tomatoes:
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Schindler's List", "The Dark Knight" ] }, "imdb.rating": { $gt: 0 }, "tomatoes.viewer.rating": { $gt: 0 }, "tomatoes.critic.rating": { $gt: 0 } } }, { $project: { _id: 0, title: 1, highestRating: { $max: [ "$imdb.rating", "$tomatoes.viewer.rating", "$tomatoes.critic.rating" ] } } }, { $sort: { title: 1 } } ] )
O pipeline anterior:
Usa
$matchpara filtrar três filmes específicos que tenham classificações válidas de todas as três fontes.Usa
$projectcom$maxe uma lista de expressões para calcular a classificação mais alta emimdb.rating,tomatoes.viewer.ratingetomatoes.critic.ratingpara cada filme.Classifica a saída alfabeticamente por título.