Database
[{_id:"someId",sales:[{_id:"111",alias:"xxx",amount:500,name:"Apple",/**items with same alias always have same name and quantity*/quantity:2},{_id:"222",alias:"abc",amount:100,name:"Orange",quantity:14},{_id:"333",alias:"xxx",amount:300,name:"Apple",/**items with same alias always have same name and quantity*/quantity:2}]}]
Query
db.collection.aggregate([{$unwind:"$sales"},{$group:{_id:{_id:"$_id",alias:"$sales.alias"},sales:{$first:"$sales"},_idsInvolved:{$push:"$sales._id"},amount:{$sum:"$sales.amount"}}},{$group:{_id:"$_id._id",sales:{$push:{$mergeObjects:["$sales",{alias:"$_id.alias",amount:"$amount",_idsInvolved:"$_idsInvolved"}]}}}}])