【问题标题】:Mongoose: How to update a nested array?Mongoose:如何更新嵌套数组?
【发布时间】:2020-10-09 23:07:17
【问题描述】:

我是 MongoDB 的新手,我正在使用 mongoose 和 nodejs。目前我正在尝试更新一个嵌套数组,如下所示:

array1: [
{
    name: "one"
    array2: [
        {
            value1: "test",
            value2: "test2"
        }
    ]
}
]

所以现在我想更新array2 中的value1。我怎样才能做到这一点?我在我的代码中两次使用原子运算符,但它不起作用:

const data = await DB.findOneAndUpdate(
    {
        "array1.name": "one",
        "array1.array2.value1": "test"
    },
    {
        "$set": {
            "array1.$.array2.$.value1": "test changed"
        },
    }
);

有什么想法可以做到这一点吗?谢谢! :)

【问题讨论】:

标签: node.js mongodb express mongoose


【解决方案1】:

您可以使用arrayFilters 来更新嵌套数组。

  const data = await DB.findOneAndUpdate(
    {},
    {
      $set: {
        "array1.$[elem1].array2.$[elem2].value1": "test changed",
      },
    },
    {
      arrayFilters: [{ "elem1.name": "one"}, {"elem2.value1": "test"}],
    }
  );

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2016-10-06
    • 2016-05-03
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多