Database
db={collectionA:[{_id:ObjectId("6013859ba0c3120034d08bfa"),name:"A1",refs:[{id:ObjectId("6013859ba0c3120034d08bfb"),text:"ABC"},{id:ObjectId("6013859ba0c3120034d08bfc"),text:"DEF"}]}],collectionB:[{_id:ObjectId("6013859ba0c3120034d08bfb"),name:"B1",altName:"b1"},{_id:ObjectId("6013859ba0c3120034d08bfc"),name:"B2"}]}
Query
db.collectionA.aggregate([{$unwind:"$refs"},{"$lookup":{"from":"collectionB","localField":"refs.id","foreignField":"_id","as":"refsB"}},{$project:{_id:1,name:1,refs:{id:"$refs.id",text:"$refs.text",name:{$first:"$refsB.name"},altName:{$ifNull:[{$first:"$refsB.altName"},"Unspecified"]},}}},{$group:{_id:"$_id",name:{$first:"$name"},refs:{$push:"$refs"}}}])