2017-11-18 95 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

歡迎您:) –