Menu Docs
Página inicial do Docs
/ / /
Driver de Kotlin Sync

Transforme seus dados com agregação

Nesta página

  • Visão geral
  • Comparar agregação e encontrar operações
  • Limitações
  • Exemplo de agregação
  • Criar e Executar um Pipeline de Agregação
  • Explicar uma agregação
  • Informações adicionais
  • Documentação da API

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

Você pode usar operações de agregação para processar dados em suas coleções MongoDB e retornar resultados calculados. A estrutura de agregação MongoDB , que faz parte da API de query, é modelada sobre o conceito de um pipeline de processamento de dados. Os documentos entram em um pipeline que contém um ou mais estágios, e cada estágio transforma os documentos para gerar um resultado final agregado.

Você pode pensar em 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:

  • Execute operações de localização

  • Renomear campos

  • Calcular campos

  • Resumir dados

  • Agrupar valores

As seguintes limitações se aplicam ao usar operações de agregação :

  • Os documentos devolvidos não devem violar o limite de tamanho de documento BSON de 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 utilizando o método allowDiskUse() da classe AggregateIterable .

Importante

exceção $graphLookup

O estágio $graphLookup tem um limite de memória rigoroso de 100 megabytes e ignora a opção allowDiskUse .

Os exemplos nesta seção utilizam a coleção do restaurants no banco de dados de dados do sample_restaurants a partir do conjunto de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

A seguinte classe de dados Kotlin modela os documentos nesta coleção:

data class Restaurant(
val name: String,
val cuisine: String,
val borough: String
)

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

Este exemplo gera uma contagem do número de Padarias em cada bairro da cidade de Nova York. O seguinte código cria um pipeline de agregação que contém os seguintes estágios:

  • Um estágio $match para filtrar os documentos em que o valor do campo cuisine é "Bakery".

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

val pipeline = listOf(
Aggregates.match(Filters.eq(Restaurant::cuisine.name, "Bakery")),
Aggregates.group("\$borough", Accumulators.sum("count", 1))
)
val results = collection.aggregate<Document>(pipeline)
results.forEach { result ->
println(result)
}
Document{{_id=Bronx, count=71}}
Document{{_id=Manhattan, count=221}}
Document{{_id=Brooklyn, count=173}}
Document{{_id=Queens, count=204}}
Document{{_id=Staten Island, count=20}}
Document{{_id=Missing, count=2}}

Dica

Ao especificar uma chave de grupo para o estágio de agregação $group , certifique-se de trocar quaisquer $ caracteres usando o caractere \ .

Para visualizar informações sobre como o MongoDB executa sua operação, você pode incluir o estágio de agregação $explain em seu pipeline. 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 que o MongoDB selecionou para a operação e quaisquer planos de execução rejeitados.

O seguinte exemplo de código executa a mesma agregação mostrada na seção anterior e adiciona o estágio $explain para produzir os detalhes da operação:

print(collection.aggregate(pipeline).explain())
{
"explainVersion": "2",
"queryPlanner": {
"namespace": "sample_restaurants.restaurants"
"indexFilterSet": false,
"parsedQuery": {
"cuisine": {"$eq": "Bakery"}
},
"queryHash": "865F14C3",
"planCacheKey": "0697561B",
"optimizedPipeline": true,
"maxIndexedOrSolutionsReached": false,
"maxIndexedAndSolutionsReached": false,
"maxScansToExplodeReached": false,
"winningPlan": { ... }
...
}
...
}

Para ver uma lista completa de operadores de expressão , consulte Operadores de aggregation no manual do MongoDB Server .

Para saber mais sobre como montar um pipeline de agregação e ver exemplos, consulte Pipeline de agregação no manual do MongoDB Server .

Para saber mais sobre como criar estágios de pipeline, consulte Estágios de agregação no manual do MongoDB Server .

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

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

Voltar

Atlas Search e índices de Vector Search