Database

[{"airport":"MSP","country":"USA","procedures":[{"name":"ABC1","type":"DEP"},{"name":"JKL2","type":"ARR"},{"name":"LMN3","type":"DEP"},{"name":"PQR4","type":"ARR"}]},{"airport":"CMH","country":"USA","procedures":[{"name":"GHI4","type":"ARR"},{"name":"RST3","type":"ARR"},{"name":"TUV7","type":"DEP"},{"name":"XYZ4","type":"ARR"}]}]

Query

db.collection.aggregate([{"$unwind":"$procedures"},{"$group":{_id:{type:"$procedures.type",airport:"$airport"},country:{$first:"$country"},procedures:{$push:"$procedures"}}},{"$group":{_id:"$_id.airport",country:{$first:"$country"},procedures:{$push:{k:"$_id.type",v:"$procedures"}}}},{$project:{_id:0,airport:"$_id",country:"$country",procedures:{$arrayToObject:"$procedures"}}}])

Result