Definição
Observação
Outros usos de $maxN
Esta página descreve $maxN quando usado como uma expressão, que retorna os maiores valores n de uma array.
Você também pode usar $maxN nestes outros contextos:
$maxN (accumulator), que retorna os valores máximos dendentro de um grupo.$maxN (window function), que é usado no estágio$setWindowFieldspara retornar os maiores valoresnde documentos em uma janela específica.
Sintaxe
{ $maxN: { n: <expression>, input: <expression> } }
Campo | Tipo | Descrição |
|---|---|---|
| Expressão | Especifica o número de elementos a serem retornados. Deve resolver para um número inteiro positivo. |
| Expressão | Especifica a array de entrada a partir da qual retornar o máximo de elementos |
Comportamento
$maxNfiltra valoresnull.Se a array
inputcontiver menos denelementos,$maxNretornará todos os elementos da array.Se
inputfor resolvido para um valor que não seja de array, a operação retornará um erro.Se
inputcontiver elementos numéricos e de string, os elementos de string serão classificados antes dos elementos numéricos de acordo com a ordem de comparação de JSON.
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 $maxN para retornar os dois últimos membros do elenco em ordem alfabética para cada filme, armazenados em um novo campo topTwoCast criado por $addFields.
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { topTwoCast: { $maxN: { n: 2, input: "$cast" } } } }, { $project: { _id: 0, title: 1, cast: 1, topTwoCast: 1 } }, { $sort: { title: 1 } } ] )
O pipeline anterior:
Utiliza
$matchpara filtrar três filmes específicos.Usa
$addFieldscom$maxNpara criar um novo campotopTwoCastcontendo os dois valores alfabeticamente últimos da arraycastcomn: 2.Usa
$projectpara incluir somente os campostitle,castetopTwoCastno resultado.Utiliza
$sortpara classificar os resultados por título.