Database

[{dateRedeemed:ISODate("2022-09-15T00:00:00.000Z"),merchant:"a",paymentStatus:"paid"},{merchant:"b",paymentStatus:"unpaid"},{dateRedeemed:ISODate("2022-09-15T00:00:00.000Z"),merchant:"c",paymentStatus:"unpaid"},{merchant:"d",paymentStatus:"paid"},{dateRedeemed:ISODate("2022-09-15T00:00:00.000Z"),merchant:"e",paymentStatus:"paid"},{dateRedeemed:ISODate("2022-09-15T00:00:00.000Z"),merchant:"f",paymentStatus:"paid"},{merchant:"g",paymentStatus:"paid"},]

Query

db.collection.aggregate([{$group:{_id:0,totalPaid:{$sum:{$cond:[{$eq:["$paymentStatus","paid"]},1,0]}},totalUnredeemed:{$sum:{$ifNull:["$dateRedeemed",1,0]}},total:{$sum:1}}},{$project:{totalPaid:1,totalUnpaid:{$subtract:["$total","$totalPaid"]},totalRedeemed:{$subtract:["$total","$totalUnredeemed"]},totalUnredeemed:1,}}])

Result