Definição
Retorna o valor mínimo de documentos em uma janela específica.
Observação
Desambiguação
Esta página descreve $min quando usado como uma função de janela.
Você também pode usar $min nestes outros contextos:
$min (accumulator), usado em agrupamento para retornar o valor mínimo de um grupo de documentos.$min (expression), que retorna o valor mínimo de uma array.
Sintaxe
{ $setWindowFields: { ... output: { <field>: { $min: <expression> } } } }
Comportamento
Tipo de resultado
Quando $min compara valores de tipos diferentes, ele usa a ordem de comparação BSON para determinar qual valor é menor.
Valores nulos ou ausentes
Se alguns 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.
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 usa $setWindowFields para adicionar um campo a cada documento que contém a classificação do IMDb do filme com a pior classificação lançado no mesmo ano:
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2000, 2001 ] }, "imdb.rating": { $lte: 3.5 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { title: 1 }, output: { minimumRatingInYear: { $min: "$imdb.rating", window: { documents: [ "unbounded", "unbounded" ] } }, rankInYear: { $documentNumber: {} } } } }, { $project: { _id: 0, title: 1, year: 1, imdb: { rating: "$imdb.rating" }, minimumRatingInYear: 1, rankInYear: 1 } }, { $sort: { year: 1, title: 1 } } ] )
O pipeline anterior:
Usa
$matchpara filtrar filmes de 1999, 2000 e 2001 com uma classificação do IMDb de 3.0 ou inferior.Utiliza
$setWindowFieldspara dividir filmes poryeare classificá-los portitle. O estágio usa$mincom uma janela de documentos de[ "unbounded", "unbounded" ]para criarminimumRatingInYear, que contém o mínimo deimdb.ratingem toda a partição, e$documentNumberpara atribuir um número de linha por partição (rankInYear) a cada documento.Utiliza
$projectpara incluirtitle,year,imdb,minimumRatingInYearerankInYearna saída.Utiliza
$sortpara classificar os resultados por ano e título.