在mongodb nodejs中更新文档的数组字段的整个子元素

时间:2017-11-18 06:09:37

标签: node.js mongodb findandmodify

考虑以下文档,我想用_id:123,

更新整个数据集字段
  "data": {
            "_id": "1234546",
            "dataset": [
                {
                    "_id": "123",
                    "el2": "asd",
                    "el3": "sd",
                    "el4": "gfdd",
                    "el5": "asdfa",
                },
                {
                    "_id": "787",
                    "el2": "asd",
                    "el3": "sd",
                    "el4": "gfdd",
                    "el5": "asdfa",
                },
                {
                    "_id": "898",
                    "el2": "asd",
                    "el3": "sd",
                    "el4": "gfdd",
                    "el5": "asdfa",
                },
                {
                    "_id": "564",
                    "el2": "asd",
                    "el3": "sd",
                    "el4": "gfdd",
                    "el5": "asdfa",
                },
            ]
        }

我想使用_id of field更新数组元素的所有字段。

我正在使用

    getDB.collection ('data').findOneAndUpdate(
    { _id: new ObjectId(data.userId),
        "dataset._id":new ObjectId(data.dataset),
    },
    { $set: { "userAddress.$":newdataset } },
    {returnOriginal:false}});

请建议一些更新的选项。

提前致谢.. :))

1 个答案:

答案 0 :(得分:1)

如果您只想在不提取数据库的情况下更新数据库服务器上的文档,则可以使用update而不是findOneAndUpdate。

这是一种方法。

collection('data').update({
      _id:<_id>,
      "dataset._id":<dataset._id>
    },{
      $set:{
        "dataset.$.el2":<el2>,
        "dataset.$.el3":<el3>,
        "dataset.$.el4":<el4>,
        "dataset.$.el5":<el5>
      }
    })