Menu Docs
Página inicial do Docs
/

Operações de agregação

Operações de agregação processam diversos documentos e geram resultados calculados. Você pode usar operações de agregação para:

  • Agrupar valores de diversos documentos.

  • Calcule um único resultado a partir dos dados agrupados.

  • Analisar alterações de dados ao longo do tempo.

  • Consulte a versão mais atualizada dos seus dados.

Os operadores de agregação no MongoDB permitem que você execute análises em seu cluster sem mover dados para outra plataforma.

Para realizar operações de agregação, você pode usar:

  • Pipelines de agregação, o método preferencial.

  • Métodos de agregação de finalidade específica, que têm menos funcionalidade do que um pipeline de agregação.

Você pode executar pipelines de agregação na IU para sistemas hospedados no MongoDB Atlas.

Um pipeline de agregação consiste em um ou mais estágios que processam documentos. Esses documentos podem vir de uma collection, uma visualização ou um estágio especialmente projetado.

Cada estágio executa uma operação nos documentos de entrada. Por exemplo, um estágio pode $filter documentos, $group documentos e calcular valores. Os documentos gerados de um estágio são então passados para o próximo estágio no pipeline.

Um pipeline de agregação pode retornar resultados para grupos de documentos. Você também pode atualizar documentos com um pipeline de agregação usando os estágios mostrados em Atualizações com Pipeline de Agregação.

Observação

Os pipelines de agregação executados com o método db.collection.aggregate() não modificam documentos em uma coleção, a menos que o pipeline contenha um estágio $merge ou $out.

Os exemplos nesta página usam dados do conjunto de dados de amostra 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 pipeline a seguir localiza os três principais diretores que dirigiram a maioria dos filmes no banco de dados.

Use um estágio $match para filtrar para filmes que têm diretores listados (excluindo documentos onde o campo de diretores é nulo ou vazio):

{
$match : {
"directors" : { $exists: true, $ne: null, $not: {$size: 0} }
}
},

O estágio $match reduz o número de documentos em nosso pipeline filtrando filmes sem informações do diretor. Em seguida, use $unwind para desconstruir o array de diretores para que você possa contar filmes por diretor individual:

{
$unwind : "$directors"
},

Use $group para agrupar documentos por nome de diretor e contar os filmes de cada diretor:

{
$group : {
_id : "$directors",
movieCount : {
$sum: 1
}
}
},

Use $sort para ordenar os documentos restantes em ordem decrescente por contagem de filmes:

{
$sort : {
movieCount : -1
}
},

Use $limit para retornar os três principais diretores:

{
$limit : 3
}

O pipeline completo:

db.movies.aggregate(
[
{
$match : {
"directors" : { $exists: true, $ne: null, $not: {$size: 0} }
}
},
{
$unwind : "$directors"
},
{
$group : {
_id : "$directors",
movieCount : {
$sum: 1
}
}
},
{
$sort : {
movieCount : -1
}
},
{
$limit : 3
}
]
)

O pipeline retorna estes resultados:

[
{ _id: 'Woody Allen', movieCount: 40 },
{ _id: 'Martin Scorsese', movieCount: 32 },
{ _id: 'Takashi Miike', movieCount: 31 }
]

Para exemplos executáveis que contêm exemplos de documentos de input, consulte Exemplos completos de pipeline de agregação.

Para saber mais sobre pipelines de agregação, consulte Pipelines de agregação.

Os métodos de agregação de finalidade específica agregam documentos de uma única coleção. Esses métodos têm menos funcionalidade do que um pipeline de agregação.

Método
Descrição

Gera uma contagem aproximada dos documentos em uma coleção ou visualização.

Gera uma contagem do número de documentos em uma coleção ou visualização.

Gera uma array de documentos com valores distintos para o campo especificado.

Voltar

Dados monetários

Receber um selo de habilidade

Domine "Os fundamentos da transformação de dados" gratuitamente!

Saiba mais

Nesta página