在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}}); 

请build议一些很好的选项来更新它。

提前致谢.. :)

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

这里有一个方法来做到这一点。

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