我试图在mongo中更新深度嵌套的子文档,但没有成功。
我想更新subGroups数组中的advisors
字段。根据条件。
例如,如果groupName: 'others'
和subGroupName: 'a'
我想推送到advisors
数组。
我已经尝试了所有可能在StackOverflow上找到的解决方案,但都没有。这就是我发布新问题的原因。
{
"_id" : ObjectId("5adf46105129180001c41bae"),
"groups" : [
{
"groupName" : "others",
"subGroups" : [
{
"subGroupName" : "a",
"students" : [],
"advisors" : [
"lonard",
]
},
{
"subGroupName" : "bots",
"students" : [],
"advisors" : [
"test"
]
},
]
},
{
"groupName" : "masters",
"subGroups" : [
{
"subGroupName" : "a",
"students" : [],
"advisors" : []
},
{
"subGroupName" : "slots",
"students" : [],
"advisors" : []
}
]
}
],
"__v" : 0
}
这是我尝试过的。
ClassGroup.update(
{
university,
groups: {
$elemMatch: {
groupName: 'others',
"subGroups.subGroupName": 'bots'
}
}
},
{
$push: { "groups.$[outer].subGroups.$[inner].advisors": advisors }
},
{
arrayFilters: [
{ "outer.groupName": 'others' },
{ "inner.subGroupName": 'bots' }
]
}
)
除了其他一些解决方法之外,它还不起作用。我不确定我错过了什么。
N.B这篇文章被标记为重复,但在尝试链接到副本时我收到了错误。
MongoError: cannot use the part (groups of groups.$[outer].subGroups.$[inner].advisors) to traverse the element ({groups: [ { groupName: \"others\", ...
感谢。