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

Update whole child element of an array field of an document in mongodb nodejs

考虑到以下文档,我想用 _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}});

请推荐一些好的更新选项。

提前致谢..:)

如果您只想更新数据库服务器上的文档而不获取它,您可以使用 update 而不是 findOneAndUpdate。

这是一种方法。

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