Aqui vamos mostrar um pouco mais de como podemos utilizar as aggregations, como dito no outro artigo sobre o assunto, as aggregations são operações onde podemos agrupar dados e gerar resultados conforme as nossas necessidades, para realizarmos algumas análise de dados da nossa loja na E-com Plus .
Na nossa aggregation de hoje, vamos listar os produtos mais pedidos em um determinado período de tempo, preparados? Café está na mão ? Sim… vamos lá…
COMO REALIZAR A AGGREGATION
Vamos precisar de alguns dados importantes para realizarmos a nossa requisição, tais como ID da loja, ID da sua autenticação e o token. Não sabe onde encontrar esses dados? Recomendo aqui que leia nossa postagem anterior sobre aggregations : Como criar agrupamentos de dados, Aggregation, nela realizamos um passo-a-passo de como coletar as informações necessárias e como realizar uma aggregation.
De posse das informações necessárias descritas anteriormente, então vamos a nossa requisição de aggregation. Nesta requisição também iremos utilizar o Hoppscotch (https://hoppscotch.io/ ) para realizar a aggregation em nossa API .
As aggregations são uma requisições de método POST
, na seguinte url: https://api.e-com.plus/v1/$aggregate.json
O Header da requisição deverá conter as seguintes informações:
- X-Store-ID: Id_da_sua_loja
- X-Access-Token: seu_token_atualizado
- X-My-ID: id_da_sua_autenticacao
Por isso a importância de ter essas informações antes de realizarmos a requisição de aggregation.
Como dito na nossa outra postagem sobre aggregations, o segredos delas está no body da requisição, onde iremos passar duas propriedades: a primeira é o resource, no qual vamos informar qual collection (tabela) iremos realizar a operação e a segunda propriedade é o pipeline que é um conjunto de estágios em nossa operação.
Sobre o resource, como iremos listar os produtos mais pedidos em um determinado período de tempo, nossa operação será realizada na colletion de pedidos ou seja na orders.
O pipeline terá os seguintes estágios:
- Primeiro estágio é:
{
"$match": {
"created_at": {
"$gte": "2022-01-01T00:00:00.000Z"
}
}
},
que irá definir a data inicial da nossa requisição, neste exemplo estamos utilizando a data do dia 01 de Maio de 2022 para ser a data de início da nossa operação.
- O segundo estágio é:
{
"$match": {
"created_at": {
"$lte": "22022-12-31T23:59:59.999Z"
}
}
},
que irá definir a data final do nosso período de busca, aqui a data escolhida foi 31 de Maio de 2022.
Obs: Nestes dois primeiros estágios é que definimos o período que gostaríamos de analisar, neste exemplo usamos o período do mês de Maio, mas poderia ser qualquer período que desejássemos analisar.
- O terceiro estágio é:
{
"$unwind": "$items"
},
aqui nesse estágio iremos separar nosso itens do pedido, para que possamos contabilizar itens diferentes de um mesmo pedido.
- Já o nosso quarto estágio é
{
"$group": {
"_id": "$items.product_id",
"count": {
"$sum": "$items.quantity"
}
}
},
um agrupamento dos itens, que serão agrupados pelo _id do produto (product_id) e será contabilizado a quantidade desse produto na propriedade count
- Já o nosso quinto e último estágio, porém não menos importante, é a ordenação da nossa resposta que deverá ser em ordem decrescente, ou seja, os produtos com mais quantidade de pedidos estarão no topo da nossa lista de resposta.
{
"$sort": {
"count": -1
}
}
Sendo assim o body da nossa requisição terá a seguinte forma:
{
"resource": "orders",
"pipeline": [
{
"$match": {
"created_at": {
"$gte": "2022-01-01T00:00:00.000Z"
}
}
},
{
"$match": {
"created_at": {
"$lte": "2022-12-31T23:59:59.999Z"
}
}
},
{
"$unwind": "$items"
},
{
"$group": {
"_id": "$items.product_id",
"count": {
"$sum": "$items.quantity"
}
}
},
{
"$sort": {
"count": -1
}
}
]
}
A nossa resposta terá o seguinte formato:
{
"result": [
{
"_id": "6166cb1528ace502aea2dc36",
"count": 5
},
{
"_id": "5f8dd8e8b2161709fa40c620",
"count": 1
}
]
}
Ou seja, houveram 5 pedidos do produto com o _id 6166cb1528ace502aea2dc36 e 1 pedido do produto cujo o _id é 5f8dd8e8b2161709fa40c620, no período do dia 1 de maio de 2022 à 31 de maio de 2022.
Espero que este artigo possa contribuir para vocês nas análises de seus pedidos e também em como vocês podem construir suas próprias aggregations.
Até breve pessoal .