多嵌套数组中的Mongodb更新对象

时间:2020-11-01 19:37:36

标签: node.js mongodb mongoose

我正在尝试更新Mongodb中多嵌套数组中的对象。我知道我不能对多层嵌套数组使用位置$运算符。因此,我尝试改用arrayFilters。

这是我的查询结构:

var objTest = {
    name: 'blah',
    color: 'blablah'
}

SomeModel.updateOne(
    {
        an_id: anId,
        "an_array.another_array.and_another_array.some_id": id,
    },
    {
        $set: {
            "an_array.$[element].another_array.$[another_element].and_another_array": objTest,
        },
    },
    {
        arrayFilters: [
            { "element.name": 'test' },
            { "another_element.id": 'test2' },
        ],
    }
)
.then((result) => {
    console.log("result ", result);
    resolve(result);
})
.catch((err) => {
    console.log("err is ", err);
    reject(err);
});

因此,根据示例,我尝试更新与some_id数组中的and_another_array匹配的对象。尝试此操作时,我收到错误The top-level field name must be an alphanumeric string beginning with a lowercase letter, found 'another_element'

我不明白我在做什么错。

1 个答案:

答案 0 :(得分:0)

我能够找出问题所在。由于某种原因,mongodb不喜欢another_element中的。将其重命名为另一个元素。