Database

db={"collection":[{"_id":ObjectId("5ce7454f77af2d1143f84c38"),"menu_name":"mainmenu1","sub_menus":[{"name":"submenu1","project":["All"]},{"name":"submenu2","project":["p2"]}]}],"project":[{"project_name":"p1","sub_menus":"submenu1"},{"project_name":"p2","sub_menus":"submenu2",},{"project_name":"p2","sub_menus":"submenu1",},{"project_name":"p3","sub_menus":"submenu2",},{"project_name":"p3","sub_menus":"submenu1",},{"project_name":"p4","sub_menus":"submenu2",}]}

Query

db.collection.aggregate([{$addFields:{sub_menus_flat:{$reduce:{input:"$sub_menus",initialValue:[],in:{$concatArrays:["$$value",{$map:{input:"$$this.project",as:"p",in:{name:"$$this.name",project:"$$p"}}}]}}}}},{$lookup:{from:"project",let:{sub_menus_flat:"$sub_menus_flat"},pipeline:[{$match:{$expr:{$anyElementTrue:{$map:{input:"$$sub_menus_flat",in:{$and:[{$eq:["$$this.name","$sub_menus"]},{$in:["$$this.project",["All","$project_name"]]}]}}}}}}],as:"projects"}},{$project:{_id:1,menu_name:1,sub_menus:{$map:{input:"$sub_menus",in:{sub_menu_name:"$$this.name",projectData:{$filter:{input:"$projects",as:"p",cond:{$and:[{$eq:["$$p.sub_menus","$$this.name"]}]}}}}}}}},{$project:{"sub_menus.projectData._id":0,"sub_menus.projectData.sub_menus":0}}])

Result