Mongoose更新深层嵌套数组 - Mongodb

时间:2018-05-02 21:20:11

标签: arrays mongodb mongoose

我试图在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\", ... 感谢。

0 个答案:

没有答案
相关问题