Database

db={"clients":[{_id:ObjectId("000000000000000000000000"),id:"12345",name:"name xyz",goal:"goal 123",start:null,end:null,plan:[{day:0,exercises:[{id:"xxxx1",stat1:"stat 1 stuff",stat2:"stat 2 stuff"},{id:"xxxx2",stat1:"stat 1 stuff",stat2:"stat 2 stuff"}]},{day:1,exercises:[{id:"xxxx2",stat1:"stat 1 stuff",stat2:"stat 2 stuff"}]}]}],"exercises":[{_id:ObjectId("000000000000000000000001"),id:"xxxx1",stat3:"stat 3 stuff",stat4:"stat 4 stuff"},{_id:ObjectId("000000000000000000000002"),id:"xxxx2",stat3:"stat 3 stuff",stat4:"stat 4 stuff"},{_id:ObjectId("000000000000000000000003"),id:"xxxx3",stat3:"stat 3 stuff",stat4:"stat 4 stuff"}]}

Query

db.clients.aggregate([{"$lookup":{"from":"exercises","localField":"plan.exercises.id","foreignField":"id","pipeline":[{"$unset":"_id"}],"as":"exLookup"}},{"$set":{"plan":{"$map":{"input":"$plan","as":"planElem","in":{"$mergeObjects":["$$planElem",{"exercises":{"$map":{"input":"$$planElem.exercises","as":"exElem","in":{"$mergeObjects":["$$exElem",{"$arrayElemAt":["$exLookup",{"$indexOfArray":["$exLookup.id","$$exElem.id"]}]}]}}}}]}}}}},{"$unset":"exLookup"}])

Result