Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

$bottomN (função de janela)

$bottomN

Retorna os elementos n inferiores dentro de uma janela específica, de acordo com a ordem de classificação especificada.

Observação

Desambiguação

Esta página descreve $bottomN quando usado como uma função de janela.

Você também pode usar $bottomN (accumulator), que retorna os elementos n inferiores dentro de um grupo de acordo com a ordem de classificação especificada.

{
$setWindowFields: {
...
output: {
<field>: {
$bottomN: {
n: <expression>,
output: <expression>,
sortBy: { <field1>: <sort order>, <field2>: <sort order> ... }
},
window: {
documents: [ <lower boundary>, <upper boundary> ]
}
}
}
}
}
Campo
necessidade
Descrição

n

Obrigatório

Número de resultados a retornar. Deve resultar em um valor integral positivo.

Se a janela tiver menos de n elementos, $bottomN retornará todos os elementos na janela.

output

Obrigatório

Determina a saída para cada documento na janela. Pode ser qualquer expressão.

sortBy

Obrigatório

Define a ordem de classificação dos elementos dentro da janela, com sintaxe semelhante a $sort. Não afeta a ordem dos documentos na saída do pipeline.

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 a função de janela $bottomN para retornar cada filme junto com os três filmes com classificação mais baixa lançados no mesmo ano.

db.movies.aggregate( [
{
$unwind: "$genres"
},
{
$match: {
genres: "Action",
rated: "PG-13",
"imdb.rating": { $lte: 5 },
year: { $in: [ 2000, 2001, 2002 ] }
}
},
{
$setWindowFields: {
partitionBy: "$year",
output: {
lowestThreeMovies: {
$bottomN: {
sortBy: { "imdb.rating": -1, title: 1 },
output: [ "$title", "$imdb.rating" ],
n: 3
},
window: {
documents: [ "unbounded", "unbounded" ]
}
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
"imdb.rating": 1,
lowestThreeMovies: 1
}
}
] )

No exemplo anterior:

  • $unwind desconstrói a array genres para que cada documento de filme contenha apenas um único gênero.

  • $match restringe a entrada a filmes Action classificados como PG-13, com um valor imdb.rating de 5 ou inferior e que foram lançados em 2000, 2001 ou 2002.

  • $setWindowFields divide os documentos por year.

  • window: { documents: [ "unbounded", "unbounded" ] } abrange a partição do ano inteiro, portanto, $bottomN considera todos os documentos do ano ao determinar os três filmes com classificação mais baixa.

  • $bottomN usa sortBy: { "imdb.rating": -1, title: 1 } para classificar filmes por pontuação IMDb e usa title como desempate. Cada documento no mesmo ano recebe o mesmo valor de lowestThreeMovies.

  • $project remove campos desnecessários para destacar o resultado da função da janela.

Avalie esta página