Database

db={"Backpack":[{_id:"backpack",slots:[{slot:"left-pocket",contents:[{item:"pen",count:3},{item:"pencil",count:2},]},{slot:"right-pocket",contents:[{item:"bottle",count:1},{item:"eraser",count:1},]}]},{_id:"bag",slots:[{slot:"rightleft-pocket",contents:[{item:"pen",count:3},{item:"pencil",count:2},]},{slot:"leftright-pocket",contents:[{item:"bottleNoMatch",count:1},{item:"eraserNoMatch",count:1},]}]}],"items":[{_id:"pen",color:"red"},{_id:"pencil",color:"black"},{_id:"bottle",color:"blue"},{_id:"eraser",color:"white"}]}

Query

db.Backpack.aggregate([{$lookup:{from:"items",localField:"slots.contents.item",foreignField:"_id",as:"items"}},{$project:{slots:{$map:{input:"$slots",in:{$mergeObjects:["$$this",{contents:{$map:{input:"$$this.contents",as:"c",in:{$mergeObjects:["$$c",{$let:{vars:{matchedItem:{$arrayElemAt:[{$filter:{input:"$items",as:"i",cond:{$eq:["$$c.item","$$i._id"]}}},0]}},in:{color:"$$matchedItem.color"}}}]}}}}]}}}}}])

Result