Database
db={"Offers":[{"_id":0,"name":"Offer1","items":[{"id":"1234","itemName":"Apples"},{"id":"2345","itemName":"Oranges"}]},{"_id":1,"name":"Offer2","items":[{"id":"1234","itemName":"Apples"},{"id":"3456","itemName":"Bananas"}]}],"Inventory":[{"_id":74,"id":"1234","shortName":"Apples","longName":"Malus domestica"},{"_id":75,"id":"3456","shortName":"Bananas","longName":"Giant Cavendish"}]}
Query
db.Offers.aggregate([{"$lookup":{"from":"Inventory","localField":"items.id","foreignField":"id","pipeline":[{"$project":{"_id":0,"id":1,"longName":1}}],"as":"longNames"}},{"$set":{"items":{"$map":{"input":"$items","as":"item","in":{"$mergeObjects":["$$item",{"itemName":{"$getField":{"field":"longName","input":{"$first":{"$filter":{"input":"$longNames","as":"elem","cond":{"$eq":["$$item.id","$$elem.id"]}}}}}}}]}}}}},{"$unset":"longNames"},{"$merge":"Offers"}])