2013-04-08 82 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

相关问题