Olá,
Sabemos que em uma instrução SQL podemos utilizar o operador de agregação GROUP BY que é utilizado em conjunto com a cláusula SELECT para agrupar registros semelhantes em uma tabela. A seleção é feita de acordo os critérios definidos na cláusula WHERE, caso ela seja utilizada, e conforme o campo indicado para o agrupamento no comando GROUP BY. Sobre o resultado obtido, podemos aplicar diversas funções como:
- Somatória dos valores de uma coluna: SUM()
- Quantidade de registros que atenda a um critério: COUNT()
- Cálculo da média ponderada: AVG()
- Identificar os menores valores: MIN()
- Identificar os maiores valores: MAX()
No MongoDB também podemos utilizar tais funções de agregação e o objetivo deste artigo será o de demonstrar a sintaxe do comando. Para exemplificar, usando um banco de dados relacional, teremos o seguinte cenário.
SQL> create table t1 (uf varchar2(2));
Tabela criada.
SQL> insert into t1 values ('MG');
1 linha criada.
SQL> insert into t1 values ('MG');
1 linha criada.
SQL> insert into t1 values ('MG');
1 linha criada.
SQL> insert into t1 values ('MG');
1 linha criada.
SQL> insert into t1 values ('MG');
1 linha criada.
SQL> insert into t1 values ('SP');
1 linha criada.
SQL> insert into t1 values ('SP');
1 linha criada.
SQL> insert into t1 values ('SP');
1 linha criada.
SQL> insert into t1 values ('RJ');
1 linha criada.
SQL> insert into t1 values ('RJ');
1 linha criada.
SQL> commit;
Commit concluído.
SQL> select uf,count(*) qtd from t1 group by uf;
UF QTD
-- ----------
RJ 2
SP 3
MG 5
Agora irei criar o mesmo cenário no MongoDB.
> use db01
switched to db db01
> db.t1.insertMany([
... { uf: "MG" },
... { uf: "MG" },
... { uf: "MG" },
... { uf: "MG" },
... { uf: "MG" },
... { uf: "SP" },
... { uf: "SP" },
... { uf: "SP" },
... { uf: "RJ" },
... { uf: "RJ" }
... ]);
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("624f3981426338c36f74d687"),
ObjectId("624f3981426338c36f74d688"),
ObjectId("624f3981426338c36f74d689"),
ObjectId("624f3981426338c36f74d68a"),
ObjectId("624f3981426338c36f74d68b"),
ObjectId("624f3981426338c36f74d68c"),
ObjectId("624f3981426338c36f74d68d"),
ObjectId("624f3981426338c36f74d68e"),
ObjectId("624f3981426338c36f74d68f"),
ObjectId("624f3981426338c36f74d690")
]
}
> db.getCollection("t1").aggregate([{"$group" : {_id: "$uf" , count:{$sum:1}}}]);
{ "_id" : "RJ", "count" : 2 }
{ "_id" : "SP", "count" : 3 }
{ "_id" : "MG", "count" : 5 }
Nenhum comentário:
Postar um comentário