EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Queries de pipeline de agregação do MongoDB versus queries SQL

Joe Karlsson7 min read • Published Feb 07, 2022 • Updated May 10, 2022
SQLMongoDBFramework de agregação
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Vamos ser verdadeiros: muitos desenvolvedores que estão chegando ao MongoDB estão se juntando à comunidade com uma sólida experiência em SQL. Eu pessoalmente me incluiria neste subconjunto de desenvolvedores MongoDB. É útil mapear termos e conceitos com os quais você esteja familiarizado no SQL para ajudar a "traduzir" seu trabalho para a linguagem de query do MongoDB (MQL). Mais especificamente, nesta postagem, mostrará a tradução do Aggregation Pipeline do MongoDB do SQL.

O que é framework de agregação?

O framework de agregação permite que você analise seus dados em tempo real. Usando-o, você pode criar um pipeline de agregação que consiste em um ou mais estágios. Cada estágio transforma os documentos e passa a saída para o próximo estágio.
Se você estiver familiarizado com o pipe Unix |, poderá pensar no aggregation pipeline como um conceito muito semelhante. Assim como a saída de um comando é passada como entrada para o próximo comando quando você usa o piping, a saída de um estágio é passada como entrada para o próximo estágio quando você usa o pipeline de agregação.
SQL é uma linguagem declarativa. Você precisa declarar o que deseja ver - é por isso que SELECT vem em primeiro lugar. Você precisa pensar em conjuntos, o que pode ser difícil, especialmente para programadores funcionais. Com o pipeline de agregação do MongoDB, você pode ter estágios que refletem como você pensa — por exemplo, "Primeiro, vamos agrupar por X. Em seguida, obteremos os 5 principais de cada grupo. Depois, organizaremos por preço." Esta é uma query difícil de fazer no SQL, mas muito mais fácil usar a estrutura de pipeline de agregação.
O framework de agregação tem uma variedade de estágios disponíveis para você usar. Hoje, discutiremos os fundamentos de como usar $match, $group, $sort e $limit. Observe que o framework de agregação tem muitos outros estágios avançados, incluindo $count, $geoNear, $graphLookup, $project, $unwind e outros.
Se você quiser conferir outra ótima introdução ao MongoDB Aggregation Pipeline, não deixe de conferir Introdução ao MongoDB Aggregation Framework.

Terminologia e conceitos

A tabela a seguir fornece uma visão geral dos termos, funções e conceitos de agregação SQL comuns e dos operadores de agregação MongoDB correspondentes:
Termos, funções e conceitos do SQLOperadores de agregação do MongoDB
WHERE$match
AGRUPAR POR$group
HAVING$match
SELECT$project
LIMIT$limit
OFFSET$skip
ORDENAR POR$sort
SUM()$sum
COUNT()$sum e $sortByCount
JOIN$lookup
SELECIONAR EM NEW_TABLE$out
MESCLAR NA TABELA$merge (Disponível a partir do MongoDB 4.2)
UNION ALL$unionWith (Disponível a partir do MongoDB 4.4)
Muito bem, agora que cobrimos o básico das agregações do MongoDB, vamos pular para alguns exemplos.

Configuração do SQL

Os exemplos SQL assumem duas tabelas, collection e músicas, que se juntam pelascolunas snapshot.album_id e concerns.id . Veja como são as tabelas:
Ábum
idNomebanda_namePreçoStatus
1músicas lo-fi Chill Hoop para aprenderSilicon Infinite2.99uma
2Pedras da LuaSilicon Infinite1.99B
3SaborOrgânico4.99uma
Músicas
idtitlepeçasalbum_id
1Batidas na neve1331
2Rolling By2421
3Nuvens31911
4Mas o primeiro café5623
5Outono9013
6Torradas com leite1182
7Mic Roxo7192
8Jantar de uma nota12422
Usei um site chamado SQL Fiddlee usei PostgreSQL 9.6 para todos os meus exemplos. No entanto, fique à vontade para executar esses trechos de exemplo de SQL onde você se sentir mais à vontade. Na verdade, este é o código que usei para configurar e popular minhas tabelas com nossos dados de amostra:

Configuração do MongoDB

Os exemplos do MongoDB assumem uma coleção albums que contém documentos com o seguinte esquema:
Para esta publicação, criei todos os meus protótipos em um playground de plug-ins do MongoDB Visual Studio Code. Para obter mais informações sobre como usar um MongoDB Playground no Visual Studio Code, não deixe de conferir esta publicação: Como usar o plug-in de código do MongoDB Visual Studio. Depois de configurar seu playground, você poderá usar este trecho para configurar e semear sua collection. Você também pode acompanhar esta demonstração usando o MongoDB Web shell.

Referência rápida

Contagem de todos os registros de álbuns

SQL

MongoDB

Some o campo preço de álbuns

SQL

MongoDB

Para cada banda_nome único, some o campo preço

SQL

MongoDB

Para cada banda_nome exclusivo, some o campo preço, resultados classificados por soma.

SQL

MongoDB

Para band_name com múltiplos álbuns, retorne o band_name e a contagem de álbuns correspondente.

SQL

MongoDB

Soma o preço de todos os discos com status A e agrupa por banda_name única

SQL

MongoDB

Para cada banda_nome exclusiva com status A, some o campo preço e retorne apenas quando a soma for maior que $5.00

SQL

MongoDB

Para cada nome de banda único, some o campo de reproduções de música correspondente associado aos álbuns

SQL

MongoDB

Para cada disco exclusivo, obtenha a faixa do disco com mais reproduções

SQL

MongoDB

Encerrando

Esta publicação não oferece de forma alguma uma visão geral completa de todas as maneiras de usar o MongoDB como um banco de dados baseado em SQL. Isso foi feito apenas para ajudar os desenvolvedores em SQL a começar a fazer a transição para o MongoDB com algumas queries básicas usando o pipeline de agregação. A framework de aggregation tem muitos outros estágios avançados, incluindo $count, $geoNear, $graphLookup, $project, $unwinde outros.
Se você quiser melhorar o uso da Estrutura de agregação do MongoDB, não deixe de conferir a MongoDB University: M121 - A estrutura de agregação do MongoDB. Ou, melhor ainda, tente usar algumas queries avançadas de pipeline de agregação do MongoDB em seu próximo projeto! Em caso de dúvidas, consulte os MongoDB Community. É o melhor lugar para tirar suas dúvidas sobre o MongoDB.

Recursos:


Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Proteja sua API com o Spring Data MongoDB e o Microsoft EntraID


Apr 02, 2024 | 8 min read
Podcast

Dimensionamento de hardware para MongoDB com Graves


Sep 11, 2024 | 26 min
Artigo

Sincronização inicial retomável no MongoDB 4.4


Sep 11, 2024 | 5 min read
Artigo

Capture dados de IoT com o MongoDB em 5 minutos


Sep 09, 2024 | 2 min read
Sumário