Database
[{"final":[{"key":"TP-1","status_map":[{"status":"Closed","final":["a","b"]},{"status":"Done","final":["c","d"]}]},{"key":"TP-2","status_map":[{"status":"Closed","final":["x","y"]}]}],"start":[{"key":"TP-1","status_map":[{"status":"Closed","start":["h"]},{"status":"Done","start":["a"]}]},{"key":"TP-2","status_map":[{"status":"Done","start":["l","m"]}]}]}]
Query
db.collection.aggregate([{$project:{concat:{$concatArrays:["$final","$start"]}}},{$unwind:"$concat"},{$unwind:"$concat.status_map"},{$group:{_id:{k:"$concat.key",status:"$concat.status_map.status"},final:{$push:"$concat.status_map.final"},start:{$push:"$concat.status_map.start"}}},{$group:{_id:"$_id.k",status_map:{$push:{status:"$_id.status",final:"$final",start:"$start"}}}},{$project:{key:"$_id",status_map:1,_id:0}},{$unwind:"$status_map"},{$project:{key:1,"status_map.status":1,final:{$reduce:{input:"$status_map.final",initialValue:[],in:{$concatArrays:["$$value","$$this"]}}},start:{$reduce:{input:"$status_map.start",initialValue:[],in:{$concatArrays:["$$value","$$this"]}}}}},{$group:{_id:"$key",status_map:{$push:{status:"$status_map.status",final:"$final",start:"$start"}}}}])