Есть много способов сделать это, вот пример вложенности $lookup
:
[
{
'$lookup': {
'from': 'questionsanwereds',
'let': {id: '$_id'},
"pipeline": [
{
$match: {
$expr: {
$eq: ["$$id", "$reqId"]
}
}
},
{
$unwind: "$questions"
},
{
$lookup: {
from: "questions",
localField: "questions.questionId",
foreignField: "_id",
as: "questionObj"
}
},
{
"$unwind": "$questionObj"
},
{
$group: {
_id: "$_id",
questions: {
$push: {
comment: "$comment",
name: "$questionObj.name",
optionSelected: "$optionSelected"
}
}
}
}
],
'as': 'questionsAnswereds'
}
},
{
'$unwind': {
'path': '$questionsAnswereds'
}
}
]
Стратегия заключается в заполнении названия каждого вопроса отдельно, а затем группировании для восстановления необходимого структура.