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.
Executar operações nos dados agrupados para gerar um único resultado.
Analisar alterações de dados ao longo do tempo.
Para realizar operações de agregação, você pode usar:
Pipelines de agregação, considerado o método principal para realizar agregações.
Métodos de agregação de finalidade específica, considerados simples, mas não possuem os mesmos recursos de um pipeline de agregação.
Você pode executar pipelines de agregação na IU para sistemas hospedados no MongoDB Atlas.
Aggregation Pipelines
Um pipeline de agregação possui um ou mais estágios que processam documentos:
Cada estágio executa uma operação nos documentos de entrada. Por exemplo, um estágio pode filtrar documentos, agrupar documentos e calcular valores.
Os documentos vão de um estágio para outro.
Um aggregation pipeline pode retornar resultados para grupos de documentos. Por exemplo, retornar o valor total, médio, máximo e mínimo.
É possível atualizar documentos com um pipeline de agregação se você usar os estágios mostrados na página 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 coleta, a menos que o pipeline contenha uma etapa $merge
ou $out
.
Exemplo de pipeline de agregação
O exemplo de aggregation pipeline abaixo contém dois estágios e retorna a quantidade total do pedido de pizzas médias agrupadas pelo nome da pizza:
db.orders.aggregate( [ // Stage 1: Filter pizza order documents by pizza size { $match: { size: "medium" } }, // Stage 2: Group remaining documents by pizza name and calculate total quantity { $group: { _id: "$name", totalQuantity: { $sum: "$quantity" } } } ] )
O estágio $match
:
Filtra os documentos de pedido de pizza em pizzas com um
size
demedium
.Repassa os documentos restantes para o estágio
$group
.
O estágio $group
:
Agrupa os documentos restantes por
name
da pizza.Utiliza
$sum
para calcular aquantity
total do pedido para cada pizza dename
. O total é armazenado no campototalQuantity
retornado pelo aggregation pipeline.
Para exemplos executáveis que contêm exemplos de documentos de input, consulte Exemplos completos de pipeline de agregação.
Saiba mais sobre pipelines de agregação
Para saber mais sobre pipelines de agregação, consulte Pipelines de agregação.
Métodos de agregação de finalidade específica
Os métodos de agregação de finalidade específica agregam documentos a partir de uma única coleção. Os métodos são simples, mas não possuem os mesmos recursos de 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. |