Database

[{"_id":ObjectId("62c2e94e65f32725f8f62b79"),"updatedAt":ISODate("2022-06-29T13:10:36.659Z"),"createdAt":ISODate("2022-06-29T08:06:51.264Z"),"payments":{0:{paymentId:"1010",paymentType:"charge",paymentCurrency:"PKR",paymentTotal:126.6},1:{paymentId:"321",paymentType:"refund",paymentCurrency:"PKR",paymentTotal:87},2:{paymentId:"123",paymentType:"refund",paymentCurrency:"PKR",paymentTotal:10},3:{paymentId:"432",paymentType:"charge",paymentCurrency:"PKR",paymentTotal:191.95}}}]

Query

db.collection.aggregate([{$match:{createdAt:{$gte:ISODate("2022-06-28T00:00:00.000Z"),$lte:ISODate("2022-06-30T00:00:00.000Z")}}},{$set:{payments:{$objectToArray:"$payments"}}},{$project:{grandTotal:{$reduce:{input:"$payments",initialValue:0,in:{$cond:[{$eq:["$$this.v.paymentType","charge"]},{$add:["$$this.v.paymentTotal","$$value"]},{$subtract:["$$value","$$this.v.paymentTotal"]}]}}}}}])

Result