A operação de agregação no MongoDB é uma maneira eficaz de processar dados e retornar resultados computados. As operações de agregação agrupam valores de várias documentos e podem executar uma variedade de operações nesses dados agrupados para retornar um único resultado. O MongoDB fornece três maneiras de executar agregações: a pipeline de agregação, o método map-reduce e operações de agregação de único propósito.

Pipeline de Agregação

As pipelines de agregação no MongoDB usam operadores de pipeline para processar e transformar seus documentos em estágios agrupados. Cada documento passa por esses estágios de pipeline em ordem. A pipeline de agregação é uma estrutura poderosa que fornece capacidades semelhantes às consultas SQL GROUP BY.

Os operadores de pipeline incluem $match, $group, $sort, $project, $limit e muitos outros. $match filtra documentos, $group agrupa valores de vários documentos juntos, $sort ordena os documentos, $project remodela cada documento, $limit limita o número de documentos a passar para a próxima etapa.

Operações Map-Reduce

O método map-reduce é uma maneira flexível de executar agregações, especialmente quando lidamos com grandes volumes de dados. O Map-Reduce é um modelo de processamento de dados para condensar grandes volumes de dados em resultados úteis agregados. No MongoDB, map-reduce opera em uma coleção de documentos e retorna um resultado de coleção.

O processo map-reduce no MongoDB primeiro mapeia os dados para emitir pares chave-valor e, em seguida, reduz todos os pares com a mesma chave. O mapeamento e a redução são operações JavaScript personalizadas que o MongoDB executa na coleção.

Operações de Agregação de Único Propósito

O MongoDB também fornece algumas operações de agregação de único propósito, como contar o número de documentos, calcular a soma de valores e encontrar valores mínimos e máximos em uma coleção.

Exemplos de Operações de Agregação

Vamos considerar alguns exemplos de operações de agregação no MongoDB. Suponha que temos uma coleção 'orders' com documentos que contêm 'customer_id' e 'amount'.

Para encontrar a soma total de 'amount' para cada 'customer_id', podemos usar a pipeline de agregação com o operador $group:

db.orders.aggregate([
   {
      $group : {
         _id : "$customer_id",
         total : { $sum : "$amount" }
      }
   }
])

Este código agrupa os documentos por 'customer_id' e soma os valores de 'amount' para cada grupo.

Para encontrar a soma total de 'amount' para todos os documentos, podemos usar o método map-reduce:

db.orders.mapReduce(
   function() { emit(null, this.amount); },
   function(key, values) { return Array.sum(values); },
   {
      out: "order_totals"
   }
)

Este código emite a 'amount' de cada documento com uma chave nula e, em seguida, soma todos os valores emitidos.

Para contar o número de documentos na coleção, podemos usar a operação de agregação de único propósito 'count':

db.orders.count()

Este código retorna o número de documentos na coleção 'orders'.

As operações de agregação no MongoDB são uma maneira poderosa e flexível de trabalhar com dados. Elas permitem que você processe e transforme seus documentos de várias maneiras para obter os resultados desejados.

Agora responda o exercício sobre o conteúdo:

Qual das seguintes afirmações sobre operações de agregação no MongoDB é correta?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Trabalhando com pipeline de agregação

Próxima página do Ebook Gratuito:

68Trabalhando com pipeline de agregação

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto