Database

[{_id:"docID",per:[{_pid:"pid1",thing1:"pid1_thing1",thing2:"pid1_thing2"}],ore:[{_oid:"oid1",thing1:"oid1_thing1",thing2:"oid1_thing2"}],tre:[{_tid:"tid1",thing1:"tid1_thing1",thing2:"tid1_thing2"}]}]

Query

db.collection.aggregate([{$group:{_id:"$_id",array:{$push:{$setUnion:["$per","$ore","$tre"]}}}},{$unwind:"$array"},{$unwind:"$array"},{$project:{"array._id":"$_id","array._tid":"$array._tid","array._oid":"$array._oid","array._pid":"$array._pid","array.thing1":"$array.thing1","array.thing2":"$array.thing2"}},{$replaceRoot:{newRoot:"$array"}}])

Result