Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Transforme seus dados com agregação

Neste guia, você pode aprender como usar o driver C++ para executar operações de agregação.

Operações de aggregation processam dados em suas collections MongoDB e retornam resultados calculados. A estrutura de agregação MongoDB, que faz parte da API de query, é modelada sobre o conceito de pipelines de processamento de dados. Os documentos entram em um pipeline que contém um ou mais estágios, e esse pipeline transforma os documentos em um resultado agregado.

Dica

Tutoriais completos de agregação

You can find tutorials that provide detailed explanations of common aggregation tasks in the Complete Aggregation Pipeline Tutorials section of the Server manual. Select a tutorial, and then pick C++11 from the Select your language drop-down menu in the upper-right corner of the page.

Uma operação de agregação é semelhante a uma fábrica de carros. Uma fábrica de automóveis tem uma linha de montagem, que contém estações de montagem com ferramentas especializadas para realizar trabalhos específicos, como furadeiras e soldadores. As peças brutas entram na fábrica e, em seguida, a linha de montagem transforma e as monta em um produto acabado.

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

Você pode usar encontrar operações para executar as seguintes ações:

  • Selecione quais documentos devolver

  • Selecione quais campos retornar

  • ordenar os resultados

Você pode usar operações de agregação para executar as seguintes ações:

  • Executar operações de localização

  • Renomear campos

  • Calcular campos

  • Resumir dados

  • Agrupar valores

Lembre-se das seguintes limitações ao usar operações de agregação:

  • Returned documents cannot violate the BSON document size limit of 16 megabytes.

  • Os estágios do pipeline têm um limite de memória de 100 megabytes por padrão. Você pode exceder este limite configurando o campo allow_disk_use de uma instância do mongocxx::options::aggregate para true.

Importante

exceção $graphLookup

The $graphLookup stage has a strict memory limit of 100 megabytes and ignores the allow_disk_use field.

Observação

The examples in this guide use the restaurants collection in the sample_restaurants database from the Atlas sample datasets. To learn how to create a free MongoDB Atlas cluster and load the sample datasets, see the Get Started with Atlas guide.

Para executar uma agregação, passe uma instância mongocxx::pipeline contendo os estágios de agregação para o método collection.aggregate() .

O exemplo de código a seguir produz uma contagem do número de padarias em cada bairro de Nova York. Para fazer isso, ele usa um pipeline de agregação que contém os seguintes estágios:

  • $match stage to filter for documents in which the cuisine field contains the value "Bakery"

  • $group stage to group the matching documents by the borough field, accumulating a count of documents for each distinct value

mongocxx::pipeline stages;
stages.match(make_document(kvp("cuisine", "Bakery")))
.group(make_document(kvp("_id", "$borough"), kvp("count", make_document(kvp("$sum", 1)))));
auto cursor = collection.aggregate(stages);
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : "Brooklyn", "count" : 173 }
{ "_id" : "Queens", "count" : 204 }
{ "_id" : "Bronx", "count" : 71 }
{ "_id" : "Staten Island", "count" : 20 }
{ "_id" : "Missing", "count" : 2 }
{ "_id" : "Manhattan", "count" : 221 }

Para visualizar informações sobre como o MongoDB executa sua operação, você pode instruir o planejador de query do MongoDB a explicá -la. Quando o MongoDB explica uma operação, ele retorna planos de execução e estatísticas de desempenho. Um plano de execução é uma maneira em potencial de o MongoDB concluir uma operação. Quando você instrui o MongoDB a explicar uma operação, ele retorna o plano executado pelo MongoDB e quaisquer planos de execução rejeitados.

Para explicar uma operação de agregação , execute o comando de banco de dados de dados explain especificando o comando em um documento BSON e passando-o como argumento para o método run_command() .

The following example instructs MongoDB to explain the aggregation operation from the preceding Aggregation Example:

mongocxx::pipeline stages;
stages.match(make_document(kvp("cuisine", "Bakery")))
.group(make_document(kvp("_id", "$borough"), kvp("count", make_document(kvp("$sum", 1)))));
auto command = make_document(
kvp("explain", make_document(
kvp("aggregate", "restaurants"),
kvp("pipeline", stages.view_array()),
kvp("cursor", make_document()))));
auto result = db.run_command(command.view());
std::cout << bsoncxx::to_json(result) << std::endl;
{ "explainVersion" : "2", "queryPlanner" : { "namespace" : "sample_restaurants.restaurants",
"indexFilterSet" : false, "parsedQuery" : { "cuisine" : { "$eq" : "Bakery" } }, "queryHash":
"...", "planCacheKey" : "...", "optimizedPipeline" : true, "maxIndexedOrSolutionsReached":
false, "maxIndexedAndSolutionsReached" : false, "maxScansToExplodeReached" : false,
"winningPlan" : { ... }
... }

For a full list of aggregation stages, see Aggregation Stages in the MongoDB Server manual.

Para saber mais sobre como montar um aggregation pipeline e ver exemplos, consulte Aggregation Pipeline.

Para saber mais sobre como explicar as operações do MongoDB, consulte Explicar planos de saída e query.

Para obter mais informações sobre como executar operações de agregação com o driver C++ , consulte a seguinte documentação da API: