我正在尝试更新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'
我不明白我在做什么错。
答案 0 :(得分:0)
我能够找出问题所在。由于某种原因,mongodb不喜欢another_element中的。将其重命名为另一个元素。