Database

db={"meals":[{"_id":ObjectId("5f4e1c7471b52b63b1ff3c25"),"name":"My Meal Plan","meals":[{"name":"Breakfast","foods":[{"servingSize":100,"food":ObjectId("5f4a5b3486b27b159befb995")},{"servingSize":50,"food":ObjectId("5f4a5b3486b27b159befb996")}]},{"name":"Lunch","foods":[{"servingSize":100,"food":ObjectId("5f4a5b3486b27b159befb995")}]}]}],"foods":[{"_id":ObjectId("5f4a5b3486b27b159befb995"),"name":"Fenway franks","carbohydrate":4,"calories":280,"measurementUnit":"g","fat":26,"protein":12,"servingSize":100}]}

Query

db.meals.aggregate([{"$unwind":"$meals"},{"$unwind":"$meals.foods"},{"$lookup":{"from":"foods","localField":"meals.foods.food","foreignField":"_id","as":"meals.foods.food"}},{$unwind:{path:"$meals.foods.food",preserveNullAndEmptyArrays:true}},{$group:{_id:{_id:"$_id",name:"$meals.name"},name:{$first:"$name"},foods:{$push:"$meals.foods"}}},{$group:{_id:"$_id._id",name:{$first:"$name"},meals:{$push:{name:"$_id.name",foods:"$foods"}}}}])

Result