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 um array.
Você também pode usar $maxN nestes outros contextos:
$maxN (accumulator), que retorna osnvalores máximos dentro 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. Deverá ser resolvido para um número inteiro positivo. |
| Expressão | Especifica o array de entrada a partir do qual retornar o máximo de |
Comportamento
$maxNfiltronullvalores.Se o array
inputcontiver menos denelementos,$maxNretornará todos os elementos no array.Se
inputresolver para um valor que não seja da array, a operação retorna 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 BSON.
Exemplo
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 $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:
Usa
$matchpara filtro três filmes específicos.Usa
$addFieldscom$maxNpara criar um novo campotopTwoCastcontendo os dois últimos valores em ordem alfabética do arraycastcomn: 2.Usa
$projectpara incluir apenas os campostitle,castetopTwoCastna saída.Usa
$sortpara classificar os resultados por título.