1

考虑到以下文档,我想用 _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 来更新数组元素的所有字段。

我在用

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

请提出一些好的选择来更新它。

提前致谢.. :)

4

1 回答 1

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>
      }
    })
于 2017-11-18T07:55:09.147 回答