Database

db={"tables":[{"tableName":"Items","rows":[{"label":"row 1 label here","items":["item1","item2","item3"]},{"label":"row 2 label here","items":["item4","item5","item6"]}]}],"items":[{"id":"item1","name":"Item name","code":"XXX-XXXX-XXXX","price":100},{"id":"item2","name":"Item name","code":"XXX-XXXX-XXXX","price":100},{"id":"item3","name":"Item name","code":"XXX-XXXX-XXXX","price":100},{"id":"item4","name":"Item name","code":"XXX-XXXX-XXXX","price":100},{"id":"item5","name":"Item name","code":"XXX-XXXX-XXXX","price":100},{"id":"item6","name":"Item name","code":"XXX-XXXX-XXXX","price":100}]}

Query

db.tables.aggregate([{$set:{items:{$reduce:{input:"$rows",initialValue:[],in:{$concatArrays:["$$value","$$this.items"]}}}}},{"$lookup":{"from":"items","localField":"rows.items","foreignField":"id","as":"itemsLookup"}},{$set:{rows:{$map:{input:"$rows",as:"row",in:{$mergeObjects:["$$row",{items:{$map:{input:"$$row.items",as:"item",in:{$arrayElemAt:["$itemsLookup",{$indexOfArray:["$itemsLookup.id","$$item"]}]}}}}]}}},itemsLookup:"$$REMOVE",items:"$$REMOVE"}}])

Result