Database

db={"col1":[{"_id":ObjectId("5a934e000102030405000000"),name:"name1",itemsBought:[{"_id":ObjectId("5a934e000102030405000001"),"itemName":"name1","itemCode":"IT001","itemQuantity":19,"itemPrediction":23},{"_id":ObjectId("5a934e000102030405000002"),"itemName":"name2","itemCode":"IT002","itemQuantity":79,"itemPrediction":69},{"_id":ObjectId("5a934e000102030405000003"),"itemName":"name2","itemCode":"IT003","itemQuantity":0,"itemPrediction":0},]}],"col2":[{"itemQuantity":21,"itemCode":"IT001",},{"itemQuantity":2,"itemCode":"IT003",}],"col3":[{"itemCode":"IT001","itemPrediction":23},{"itemCode":"IT002","itemPrediction":12},{"itemCode":"IT003","itemPrediction":7}]}

Query

db.col1.aggregate([{$lookup:{from:"col2",let:{root_itemCode:"$itemsBought.itemCode"},pipeline:[{$match:{$expr:{$in:["$itemCode","$$root_itemCode"]}}}],as:"col2"}},{$lookup:{from:"col3",let:{root_itemCode:"$itemsBought.itemCode"},pipeline:[{$match:{$expr:{$in:["$itemCode","$$root_itemCode"]}}}],as:"col3"}},{$addFields:{itemsBought:{$map:{input:"$itemsBought",as:"item",in:{"_id":"$$item._id","itemName":"$$item.itemName","itemCode":"$$item.itemCode","itemQuantity":{$let:{vars:{input:{$arrayElemAt:[{$filter:{input:"$col2",cond:{$eq:["$$item.itemCode","$$this.itemCode"]}}},0]},default:"$$item.itemQuantity"},in:{$ifNull:["$$input.itemQuantity","$$default"]}}},"itemPrediction":{$let:{vars:{input:{$arrayElemAt:[{$filter:{input:"$col3",cond:{$eq:["$$item.itemCode","$$this.itemCode"]}}},0]},default:"$$item.itemPrediction"},in:{$ifNull:["$$input.itemPrediction","$$default"]}}}}}}}},{$unset:["col2","col3"]}])

Result