Database

db={"survey":[{_id:ObjectId("62555be60401f0a21553da9a"),name:"new survey",questions:[{text:"question 1",category_id:ObjectId("62555be60401f0a21553da99"),options:["Array"],_id:ObjectId("62555be60401f0a21553da9c"),},{text:"question 2",category_id:ObjectId("62555be60401f0a21553da94"),options:["Array"],_id:ObjectId("62555be60401f0a21553da9d"),}]}],"Category":[{_id:ObjectId("62555be60401f0a21553da99"),name:"category name"},{_id:ObjectId("62555be60401f0a21553da94"),name:"other category name"}],answer:[{answers:{k:"62555be60401f0a21553da9c",v:ObjectId("62555880da8fb89651f6a292")},},{answers:{k:"62555be60401f0a21553da9d",v:ObjectId("62555880da8fb89651f6a29e")},}]}

Query

db.answer.aggregate([{$lookup:{"from":"survey","let":{"k":{"$toObjectId":"$answers.k"}},pipeline:[{"$match":{"$expr":{"$in":["$$k","$questions._id"]}}}],as:"details"}},{$project:{answers:1,details:{"$arrayElemAt":["$details",0]}}},{$project:{answers:1,categoryData:{$filter:{input:"$details.questions",as:"item",cond:{$eq:["$$item._id",{"$toObjectId":"$answers.k"}]}}}}},{$project:{answers:1,catData:{"$arrayElemAt":["$categoryData",0]}}},{$lookup:{from:"Category",localField:"catData.category_id",foreignField:"_id",as:"cat"}},{$project:{answers:1,_id:0,category:{"$arrayElemAt":["$cat",0]}}},{$project:{answers:1,name:"$category.name"}}])

Result