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([{"$unwind":"$items"},{"$lookup":{"from":"Inventory","localField":"items.id","foreignField":"id","as":"invItems"}},{"$set":{"items":{"$mergeObjects":["$items",{"$setField":{"field":"itemName","input":"$items","value":{"$first":"$invItems.longName"}}}]}}},{"$group":{"_id":"$_id","items":{"$push":"$items"},"name":{"$first":"$name"}}},{"$merge":"Offers"}])

Result