我是MongoDB的新手,我在nodejs中使用猫鼬。目前,我正在尝试更新如下所示的嵌套数组:
array1: [
{
name: "one"
array2: [
{
value1: "test",
value2: "test2"
}
]
}
]
所以现在我要更新array2中的value1。我该如何实现?我在这样的代码中两次使用了atomic运算符,但是它不起作用:
const data = await DB.findOneAndUpdate(
{
"array1.name": "one",
"array1.array2.value1": "test"
},
{
"$set": {
"array1.$.array2.$.value1": "test changed"
},
}
);
有什么想法可以做到这一点吗?谢谢! :)
答案 0 :(得分:1)
您可以使用arrayFilters更新嵌套数组。
const data = await DB.findOneAndUpdate(
{},
{
$set: {
"array1.$[elem1].array2.$[elem2].value1": "test changed",
},
},
{
arrayFilters: [{ "elem1.name": "one"}, {"elem2.value1": "test"}],
}
);