Database

[{_id:"abcxyz",eventCode:"EVENTCODE01",eventName:"SOMEEVENT",units:1,rate:2,cost:2,distribution:[{startDate:ISODate("2021-05-31T04:00:00.000+00:00"),units:1},{startDate:ISODate("2021-05-31T04:00:00.000+00:00"),units:1},{startDate:ISODate("2021-06-07T04:00:00.000+00:00"),units:1}]}]

Query

db.collection.aggregate([{$unwind:{path:"$distribution",preserveNullAndEmptyArrays:false}},{$group:{_id:{eventName:"$eventName",eventCode:"$eventCode",distributionStartDate:"$distribution.startDate"},totalUnits:{$sum:"$units"},distributionUnitsSum:{$sum:"$distribution.units"},perUnitRate:{$avg:"$rate"},perUnitCost:{$avg:"$cost"}}},{$group:{_id:{eventName:"$_id.eventName",eventCode:"$_id.eventCode"},totalUnits:{$first:"$totalUnits"},newDistributionList:{$push:{startDate:"$_id.distributionStartDate",units:"$distributionUnitsSum"}},perUnitRate:{$first:"$perUnitRate"},perUnitCost:{$first:"$perUnitCost"}}}])

Result