Hello, I’m using Mongoose in NODEJS and I’ve searched a lot to do this, but I don’t find a way to make this happen in my code, I’m using Mongo 5.x.x (IDK exactly version)
Here is the question, I need to bring all month day result (a sum of values) even if sum is null or 0, but in my actual query I only bring dates with some value
My query:
{
$lookup:
{
from: 'boleto_cancelado',
localField: '_id',
foreignField: 'boleto',
as: 'boleto_cancelado'
},
},
{
$lookup:
{
from: 'boleto_extrato',
localField: '_id',
foreignField: 'boleto',
as: 'boleto_extrato'
},
},
{
$match:
{
estabelecimento: new ObjectID(req.params.estabelecimento),
ativo: true,
"dados_boleto.data_vencimento": {$gte: monthStart, $lt: monthEnd},
'boleto_extrato.modulo_id': {$exists: false},
'boleto_cancelado.modulo_id': {$exists: false},
}
},
{
$group:
{
_id: { mes: { $month: "$data_cadastro" }, dia: { $dayOfMonth: "$data_cadastro" } },
quantidade: { $sum: 1 },
soma_npagos: { $sum: "$valor.valor_boleto" },
}
},
{
$project:
{
dia: "$_id.dia",
soma_npagos: "$soma_npagos",
quantidade: "$quantidade"
}
},
{
$sort:
{
"dia": 1
}
}],
Thats the result:
"_id": {
"mes": 1,
"dia": 19
},
"dia": 19,
"soma_npagos": 189700,
"quantidade": 2
},
{
"_id": {
"mes": 1,
"dia": 28
},
"dia": 28,
"soma_npagos": 133000,
"quantidade": 1
},
{
"_id": {
"mes": 3,
"dia": 29
},
"dia": 29,
"soma_npagos": 71750,
"quantidade": 1
}
And I want something like that:
"_id": {
"mes": 1, //MONTH
"dia": 1 //DAY
},
"dia": 2, //DAY
"soma_npagos": 0, // SUM
"quantidade": 0 // COUNT
},
"_id": {
"mes": 1, //MONTH
"dia": 2 //DAY
},
"dia": 2,
"soma_npagos": 0,
"quantidade": 0
},
"_id": {
"mes": 1,
"dia": 3
},
"dia": 3,
"soma_npagos": 0,
"quantidade": 0
},
"_id": {
"mes": 1,
"dia": 4
},
"dia": 4,
"soma_npagos": 0,
"quantidade": 0
},
"_id": {
"mes": 1,
"dia": 5
},
"dia": 5,
"soma_npagos": 0,
"quantidade": 0
},
.........
"_id": {
"mes": 1,
"dia": 19
},
"dia": 19,
"soma_npagos": 189700,
"quantidade": 2
},
{
"_id": {
"mes": 1,
"dia": 28
},
"dia": 28,
"soma_npagos": 133000,
"quantidade": 1
},
{
"_id": {
"mes": 3,
"dia": 29
},
"dia": 29,
"soma_npagos": 71750,
"quantidade": 1
}
How can i do that, please?