13. Operações de agregação no MongoDB

Página 67

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.

Now answer the exercise about the content:

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

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

6814. Trabalhando com pipeline de agregação

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text