Database

[{donor:123,currency:"CAD",donationAmount:50},{donor:123,currency:"USD",donationAmount:50},{donor:789,currency:"CAD",donationAmount:50},{donor:123,currency:"CAD",donationAmount:50}]

Query

db.collection.aggregate([{$group:{_id:{donor:"$donor",currency:"$currency"},sum:{$sum:"$donationAmount"}}},{$group:{_id:"$_id.donor",donations:{$push:{$arrayToObject:[[{k:"$_id.currency",v:"$sum"}]]}}}},{$project:{_id:0,donor:"$_id",donations:1}}])

Result