aggregate() (Pipeline de Agregação)

Última atualização: 2026-10-09

aggregate() (Pipeline de Agregação)

aggregate() executa um pipeline de múltiplos estágios que agrupa, calcula e remodela documentos, ex.: `db.users.aggregate([{ $group: { _id: '$city', total: { $sum: 1 } } }])`. Estágios como $match, $group, $sort e $project transformam os dados em sequência. Muito mais poderoso que find(), é a escolha ideal para relatórios e pivôs. O pipeline roda no servidor e retorna um cursor (ou resultados inline).

CategoriaLeitura
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

db.<collection>.aggregate(<pipeline>, { allowDiskUse: <bool> })

⚙️ Parâmetros

pipelineMatriz de estágios de pipeline, por exemplo [{$match: {...}}, {$group: {...}}].
allowDiskUseOpcional. true permite que resultados intermediários acima de 100MB sejam gravados em disco.

Retorno:Cursor sobre os resultados da agregação; vazio quando $out/$merge gravam em uma coleção.

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// aggregate: conta usuários agrupados por cidade
const result = db.users.aggregate([
  { $group: { _id: '$address.city', total: { $sum: 1 } } },
  { $sort: { total: -1 } }
])
result.toArray()

Saída:

[
  { _id: 'Beijing', total: 12 },
  { _id: 'Shanghai', total: 8 }
]

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre aggregate e find?
Afind() apenas consulta e projeta; aggregate() pode agrupar, contar, somar e unir — feito para relatórios.
QE se a agregação exceder o limite de memória?
APasse {allowDiskUse: true} para despejar resultados intermediários em disco, ou otimize com um $match antecipado.
QComo consumo os resultados da agregação?
AEla retorna um cursor — chame .toArray() ou itere; com $out o cursor volta vazio, pois os resultados vão para uma coleção.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%