2014-09-19 41 views
0

我的節點/蒙戈DB與集合中的以下數據稱爲「價格」一DOC:更新多個文檔使用不同的值

[ { _id: 1, price : 10 }, {_id: 2, price : 15 }, {_id: 3, price : 12 }] 

...等等。

[ { _id: 1, price : 12 }, {_id: 3, price : 15 }, { _id: 5, price: 20 } ] (some new some updated). 

如何將我的數據更改爲:

  1. 更新退出記錄
  2. 插入新記錄,我現在從一個遠程站點,看起來像這樣接收更新的文檔。

在此先感謝您。

回答

0

你並不需要在所有改變你的數據,你可以告訴MongoDB的執行UPSERT

for (var i = 0; i < prices.length; i++) { 
    var p = prices[i]; 
    collection.update({_id: p._id}, {$set{price: p.price}}, {upsert:true, w:1}, function(err, result) { 
     if (err != null) { 
      console.log('Price updated!'); 
     } 
    }); 
} 
+0

併爲大量更新的更好的性能,可以使用[批量更新](HTTP ://docs.mongodb.org/manual/reference/method/Bulk.find.update/) – wdberkeley 2014-09-22 15:25:27