【发布时间】:2020-10-07 00:40:04
【问题描述】:
如何在mongodbquery中进行完全嵌套
【问题讨论】:
标签: node.js mongodb mongodb-query mongoose-schema
如何在mongodbquery中进行完全嵌套
【问题讨论】:
标签: node.js mongodb mongodb-query mongoose-schema
有很多方法可以做到这一点,这里是一个嵌套$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'
}
}
]
策略是分别填充每个问题的名称,然后分组以恢复所需的结构。
【讨论】:
localField 中删除$
lookup 首先成功(仅使用管道中的 $match )。根据您发布的内容应该是。