banner

blog

Jun 01, 2023

Como usar o pipeline de agregação no MongoDB

Se MapReduce tem sido sua escolha, agora pode ser a hora de fazer a transição para o Aggregation Pipeline do MongoDB para lidar com operações complexas.

O pipeline de agregação é a forma recomendada para executar consultas complexas no MongoDB. Se você estiver usando o MapReduce do MongoDB, é melhor mudar para o pipeline de agregação para obter cálculos mais eficientes.

O pipeline de agregação é um processo de vários estágios para executar consultas avançadas no MongoDB. Ele processa dados por meio de diferentes estágios chamados pipeline. Você pode usar os resultados gerados em um nível como modelo de operação em outro.

Por exemplo, você pode passar o resultado de uma operação de correspondência para outro estágio para classificação nessa ordem até obter a saída desejada.

Cada estágio de um pipeline de agregação apresenta um operador MongoDB e gera um ou mais documentos transformados. Dependendo da sua consulta, um nível pode aparecer várias vezes no pipeline. Por exemplo, você pode precisar usar o$contarou$classificarestágio do operador mais de uma vez no pipeline de agregação.

O pipeline de agregação passa dados por vários estágios em uma única consulta. São diversas etapas e você pode encontrar seus detalhes na documentação do MongoDB.

Vamos definir alguns dos mais comumente usados ​​​​a seguir.

Este estágio ajuda a definir condições de filtragem específicas antes de iniciar os outros estágios de agregação. Você pode usá-lo para selecionar os dados correspondentes que deseja incluir no pipeline de agregação.

A fase de grupo separa os dados em diferentes grupos com base em critérios específicos usando pares de valores-chave. Cada grupo representa uma chave no documento de saída.

Por exemplo, considere o seguintevendasdados de amostra:

Usando o pipeline de agregação, você pode calcular a contagem total de vendas e as principais vendas para cada seção de produto:

O_id: $Seção pair agrupa o documento de saída com base nas seções. Ao especificar ocontagem_de_vendas_topeprincipais_vendas campos, o MongoDB cria novas chaves com base na operação definida pelo agregador; isso pode ser$ soma,$min,$máx., ou$média.

Você pode usar o$ pular estágio para omitir um número especificado de documentos na saída. Geralmente acontece depois da fase de grupos. Por exemplo, se você espera dois documentos de saída, mas ignora um, a agregação produzirá apenas o segundo documento.

Para adicionar um estágio de salto, insira o$ pularoperação no pipeline de agregação:

O estágio de classificação permite organizar os dados em ordem decrescente ou crescente. Por exemplo, podemos classificar ainda mais os dados no exemplo de consulta anterior em ordem decrescente para determinar qual seção tem as vendas mais altas.

Adicione o$classificaroperador para a consulta anterior:

A operação limit ajuda a reduzir o número de documentos de saída que você deseja que o pipeline de agregação mostre. Por exemplo, use o$limiteoperador para obter a seção com as maiores vendas retornadas pela etapa anterior:

O acima retorna apenas o primeiro documento; esta é a seção com maiores vendas, pois aparece no topo da saída classificada.

O$projeto stage permite que você molde o documento de saída como desejar. Usando o$projetooperador, você pode especificar qual campo incluir na saída e personalizar seu nome de chave.

Por exemplo, um exemplo de saída sem o$projetopalco fica assim:

Vamos ver como fica com o$projeto estágio. Para adicionar o$projetopara o gasoduto:

Como agrupamos anteriormente os dados com base nas seções do produto, o texto acima inclui cada seção do produto no documento de saída. Ele também garante que a contagem de vendas agregadas e as principais vendas apareçam na saída comoTotalVendidoe

COMPARTILHAR