Database

db={"fruits":[{"_id":11,"item":"apples","colour":"red"},{"_id":22,"item":"bananas","colour":"yellow"}],"vegetables":[{"_id":900,"item":"celery","colour":"green"},{"_id":901,"item":"carrots","colour":"orange"}],"produce":[{"_id":1,"produceItems":[/** {* "itemType": "fruit",* "item": 111,* "quantity": 4* },* {* "itemType": "vegetable",* "item": 910,* "quantity": 1* }*/]}]}

Query

db.produce.aggregate([{$unwind:{path:"$produceItems",preserveNullAndEmptyArrays:true}},{$lookup:{from:"fruits",localField:"produceItems.item",foreignField:"_id",as:"fruitProperties"}},{$lookup:{from:"vegetables",localField:"produceItems.item",foreignField:"_id",as:"vegetableProperties"}},{$addFields:{"produceItems.properties":{$ifNull:[{$first:"$fruitProperties"},{$first:"$vegetableProperties"}]}}}])

Result