Definição
Retorna os valores mínimos de n de documentos em uma janela especificada.
Observação
Desambiguação
Esta página descreve $minN quando usado como uma função de janela.
Você também pode usar $minN nestes outros contextos:
$minN (accumulator), que retorna os valores mínimos denpara cada grupo.$minN (expression), que retorna os valores mínimos denem uma array.
Sintaxe
{ $setWindowFields: { ... output: { <field>: { $minN: { input: <expression>, n: <expression> } } } } }
Campo | Tipo | Descrição |
|---|---|---|
| Expressão | A expressão |
| Expressão | O número de elementos que Se a janela tiver menos de |
Comportamento
Ordem de comparação de tipo
Quando $minN compara valores de tipos diferentes, a ordem dos tipos segue a ordem de comparação BSON.
Valores nulos e ausentes
$minN filtra valores nulos e ausentes.
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.
Este exemplo utiliza a função de janela $minN para retornar as duas classificações mais baixas do IMDb para cada ano.
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2001 ] }, "imdb.rating": { $lte: 3.8, $gt: 0 } } }, { $setWindowFields: { partitionBy: "$year", output: { lowestTwoRatingsInYear: { $minN: { input: "$imdb.rating", n: 2 }, window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, lowestTwoRatingsInYear: 1 } }, { $sort: { year: 1, "imdb.rating": 1 } } ] )
O pipeline anterior:
Usa
$matchpara filtrar filmes de 1999 ou 2001 com uma classificação do IMDb de 3.8 ou inferior e superior a 0.Utiliza
$setWindowFieldspara dividir filmes poryear. O estágio usa$minNcomn: 2para criarlowestTwoRatingsInYeara partir de uma janela definida comodocuments: [ "unbounded", "unbounded" ]. A janela cobre todos os documentos na partição, entãolowestTwoRatingsInYearmostra as duas classificações mais baixas de todo o ano.Usa
$projectpara incluir somente os campostitle,year,imdb.ratingelowestTwoRatingsInYearno resultado.Utiliza
$sortpara ordenar resultados por ano eimdb.ratingem ordem crescente.