2016-01-26 41 views
0

我在JS以下貓鼬更新:

var ids=[1,3]; 
restid=1; 
db.model('rests').update({ _id: restid,'menu.id': {$in: ids}}, {$inc: {'menu.$.soldCounter': 1}}, {multi: true},function(err) { 
    if(err) 
     console.log("Error while updating sold counters: " + err.message); 
}); 

出於某種原因,該更新是在rest文檔製作與_id=1,但僅限於menu.1.soldCounter和不在menu.3.soldCounter

我已經測試了好幾次,結論是隻有ids數組中的第一個ID會被更新。

有人可以發現問題嗎?

回答

0

實際上是有辦法做到這一點:

var indexes = [1,2,3]; 

    var update = { $inc: {} }; 
    for (var i = 0; i < indexes.length; ++i) { 
     update.$inc[`menu.${indexes[i]}.soldCounter`] = 1; 

    } 
    db.model('rests').update({ _id: rest._id }, update, function(err) { 
     if(err) 
      console.log("Error while updating sold counters: " + err.message); 
    }); 

你需要知道你要在高級更新索引。那麼它只需要一個電話給數據庫。