Database
db={items:[{_id:"1",name:"A",description:"Some description 1"},{_id:"2",name:"B",description:"Some description 2"},{_id:"3",name:"C",description:"Some description 3"},{_id:"4",name:"D",description:"Some description 4"},],cItems:[{_id:"1",itemId:"1",items:[{itemId:"2",qty:4},{itemId:"3",qty:5}]},{_id:"2",itemId:"4",items:[{itemId:"2",qty:1},{itemId:"3",qty:1}]},]}
Query
db.cItems.aggregate([{$match:{_id:{$eq:"1"}}},{$lookup:{from:"items",localField:"itemId",foreignField:"_id",as:"parentItem"}},{$lookup:{from:"items",let:{items:"$items"},pipeline:[{$match:{$expr:{$in:["$_id","$$items.itemId"]}}},{"$replaceRoot":{"newRoot":{"$mergeObjects":[{$arrayElemAt:["$$items",0]},"$$ROOT"]}}}],as:"items"}},{$project:{_id:1,itemId:1,items:1,name:{$arrayElemAt:["$parentItem.name",0]},description:{$arrayElemAt:["$parentItem.description",0]}}}])