2014-03-02 50 views
0

嘿傢伙我試圖執行findAndModify但它不斷替換新的文件,並覆蓋舊的,這是我迄今爲止MongoDB的findAndModify不斷替換我的文檔

posts.findAndModify({'permalink': data.permalink},{ update: {$inc: { 'votes.up': 1 }},'$addToSet': {'votes.voted_id': data._id} },{ new: true },{upsert:true}, function(err, post) { 
      "use strict"; 
      if (err) return callback(err, null); 
      callback(err, post); 
    }); 
+0

你想做什麼?現在,它正在根據您的查詢修改現有文檔。 'upsert'和'new'選項需要作爲單個選項對象傳遞:'{new:true,upsert:true}' – WiredPrairie

+0

@WiredPrairie嗨,感謝您的回覆,我正在嘗試更新'votes.up '通過增加1和$ addToSet data._id到'votes.voted_id'之後,我需要更新的文檔返回 –

+1

您是否嘗試合併我所建議的選項?由於沒有爲堆棧溢出代碼塊寬度設置代碼格式,因此遵循所有大括號有點困難。 – WiredPrairie

回答

1

你正在使用的shell參數你的node.js調用的約定,所以你的參數是不正確的。

應該被重新格式化成獨立的參數,如這個:

posts.findAndModify(
    {'permalink': data.permalink}, 
    null, 
    {$inc: {'votes.up': 1}, 
    '$addToSet': {'votes.voted_id': data._id}}, 
    {new: true, 
    upsert: true}, 
    function(err, post) { 
     "use strict"; 
     if (err) return callback(err, null); 
     callback(err, post); 
    }); 

文檔here