2017-11-18 97 views
1

考虑下面的文件,我想更新与_id数据集的整场:123,更新整个子元素的NodeJS

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

请提出了一些很好的选择进行更新。

在此先感谢.. :)

回答

1

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

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

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

谢谢!!!法鲁克 –

+0

欢迎您:) –