Database

[{"seq":1,"cut":[{"script":[{"type":"a","text":"a1"},{"type":"a","text":"a2"},{"type":"b","text":"b1"},{"type":"c","text":"c1"}]},{"script":[{"type":"d","text":"d1"},{"type":"a","text":"a3"},{"type":"c","text":"c2"},{"type":"b","text":"b2"}]}]}]

Query

db.collection.aggregate([{$unwind:"$cut"},{$unwind:"$cut.script"},{$group:{_id:{seq:"$seq",type:"$cut.script.type"},text:{$push:"$cut.script.text"}}},{$sort:{"_id.type":1}},{$group:{_id:"$_id.seq",data:{$push:{k:"$_id.type",v:"$text"}}}},{$replaceWith:{$mergeObjects:[{seq:"$_id"},{$arrayToObject:"$data"}]}}])

Result