2013-04-08 80 views
3

例如,我的數據是{'abc':'def'},它具有單個鍵值;如何將數據追加到現有的mongodb中的鍵值

我想這一點:

do something...//data has been changed to {'abc':'defghi'} or {'abc':'['def','ghi']'} 

而且我在的NodeJS使用此代碼:

   var tmp2 = {'userid:location:2013-01-02 15':['092030', '12122.11260E']}; 

      collection.insert(tmp2, {safe:true}, function (err, result) { 
       var i = 0; 
       var a = +new Date(); 
       while(i<300000){ 
        tmp2['userid:location:2013-01-02 15'].push(i); 
     collection.save(tmp2, function() { })  
        i+=1; 
       } 
       var b = +new Date(); 
       console.log(b-a) 
      }); 

保存API可以更換相同鍵的值,所以使用推,我可以追加數據轉化爲密鑰的價值;

但也存在一些問題:

  1. 推送操作被嚴重performanced.Single保存可以運行15000 /秒,但是當使用推,這是1500 /秒。
  2. 如果我有兩個客戶端,既想要追加數據,後面的一個會覆蓋較早的數據,不會追加。 ? 我怎樣才能解決這個問題是有一個API

回答

4

的問題是,你正在使用save將覆蓋文件:最後一個獲勝。你應該考慮使用atomic updates with $push,也許通過findAndModify

+1

非常感謝,它真的有效! – jtyjty99999 2013-04-10 13:54:41

+0

很好用。請接受這個答案。 – Sim 2013-04-11 06:45:39

相關問題