Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js
/

Agregação

Nesta página

  • Visão geral
  • Analogia
  • Comparação de operações de agregação e query
  • Referências
  • Exemplos executáveis
  • Exemplo de agregação
  • Exemplos adicionais

Neste guia, você pode aprender como usar as operações de agregação no driver MongoDB Node.js.

Operações de aggregation são expressões que você pode utilizar para produzir resultados reduzidos e resumidos no MongoDB. A framework de aggregation do MongoDB permite que você crie um pipeline que consiste em um ou mais estágios, cada um dos quais executa uma operação específica em seus dados.

Você pode pensar no aggregation pipeline como uma fábrica de automóveis.A fabricação de automóveis exige o uso de estações de montagem organizadas em linhas de montagem. Cada estação possui ferramentas especializadas, como e soldadores. A fábrica transforma e reúne as peças e os materiais iniciais em produtos acabados.

O aggregation pipeline é a linha de montagem, estágios de aggregation são as estações de montagem e operadores de expressão são as ferramentas especializadas.

Utilizando operações de query, como o método find(), você pode executar as seguintes ações:

  • Selecione quais documentos devolver

  • Selecione quais campos retornar

  • ordenar os resultados

Usando operações de agregação, você pode executar as seguintes ações:

  • Executar todas as operações de consulta

  • Renomear campos

  • Calcular campos

  • Resumir dados

  • Agrupar valores

As operações de agregação têm algumaslimitações :

Importante

exceção $graphLookup

O estágio $graphLookup tem um limite de memória rigoroso de 100 megabytes e ignorará allowDiskUse.

Para ver uma lista completa de operadores de expressão, consulte Operadores de agregação no manual do servidor.

Para saber como criar um pipeline de agregação e ver exemplos, consulte Pipeline de agregação no manual do servidor.

Para saber mais sobre a criação de estágios de pipeline, consulte Estágios de agregação no manual do servidor.

O exemplo utiliza dados de amostra sobre restaurantes. O seguinte código insere dados na coleta do restaurants do banco de dados do aggregation :

const db = client.db("aggregation");
const coll = db.collection("restaurants");
// Create sample documents
const docs = [
{ stars: 3, categories: ["Bakery", "Sandwiches"], name: "Rising Sun Bakery" },
{ stars: 4, categories: ["Bakery", "Cafe", "Bar"], name: "Cafe au Late" },
{ stars: 5, categories: ["Coffee", "Bakery"], name: "Liz's Coffee Bar" },
{ stars: 3, categories: ["Steak", "Seafood"], name: "Oak Steakhouse" },
{ stars: 4, categories: ["Bakery", "Dessert"], name: "Petit Cookie" },
];
// Insert documents into the restaurants collection
const result = await coll.insertMany(docs);

Dica

Para obter mais informações sobre como se conectar à sua implantação MongoDB, consulte o Guia de conexão.

Para executar uma agregação, passe uma lista de estágios de agregação para o método collection.aggregate().

No exemplo, o pipeline de agregação usa os seguintes estágios de agregação:

  • Um estágio $match para filtrar documentos cujo campo de array categories contém o elemento Bakery.

  • Um estágio $group para agrupar os documentos correspondentes pelo campo stars, acumulando uma contagem de documentos para cada valor distinto de stars.

// Define an aggregation pipeline with a match stage and a group stage
const pipeline = [
{ $match: { categories: "Bakery" } },
{ $group: { _id: "$stars", count: { $sum: 1 } } }
];
// Execute the aggregation
const aggCursor = coll.aggregate(pipeline);
// Print the aggregated results
for await (const doc of aggCursor) {
console.log(doc);
}

Este exemplo produz a seguinte saída:

{ _id: 4, count: 2 }
{ _id: 3, count: 1 }
{ _id: 5, count: 1 }

Para obter mais informações, consulte a documentação da API para aggregate().

Para exibir explicações passo a passo de tarefas comuns de aggregation, consulte os Tutoriais de aggregation.

Você pode encontrar outro exemplo de pipeline de agregação na postagem do blog Tutorial de framework de agregação com Node.js no site do MongoDB.

Voltar

Promessas