Database

[{resource:{name:"PROJECT_01",version:1,owner:""},app_info:[{app_key:"APP_01",size:20,metadata:{deploy_on:"AWS",status:"running",reason:{}}},{app_key:"APP_01",size:20,metadata:{deploy_on:"azure",status:"failed",reason:{message:"Connectivity Issue",error_code:"CONNECTIVITY_ERROR"}}},{app_key:"APP_02",size:20,metadata:{deploy_on:"AWS",status:"running",reason:{}}},{app_key:"APP_02",size:20,metadata:{deploy_on:"azure",status:"failed",reason:{message:"Connectivity Issue",error_code:"CONNECTIVITY_ERROR"}}},]}]

Query

db.collection.aggregate([{$unwind:"$app_info"},{$group:{_id:{app_key:"$app_info.app_key",resource:"$resource"},size:{$first:"$app_info.size"},metadata:{$push:"$app_info.metadata"},resource:{$first:"$resource"}}},{$group:{_id:"$_id.resource",appInfos:{$push:{app_key:"$_id.app_key",size:"$size",metadata:"$metadata"}}}}])

Result