使用mongoose mongodb nodejs通过索引变量增加数组中的值

时间:2012-04-20 09:29:39

标签: node.js mongodb mongoose

我有一系列数字:

readersNum : {type: [Number], default: []},

我想将 indexVariable 中的值增加1。

这有效:

Posts.update({"readerID":readerID},{$inc:{"readersNum.0":1}},{upsert:true,safe:true},
              function(err){
                  console.log(err);
              });

但问题是我的值不在特定(常量)索引中它是一个变量..假设索引变量是indexVariable而不是0,我应该如何增加它?

我也尝试了这个:

Posts.findOne({"readerID":readerID },['readersNum'],function(err, readerID){
    readerID.readersNum[indexVariable] = readerID.readersNum[indexVariable]+1;
    try { 
        Posts.save(readerID,function(err) {
        if (err) {
            console.log("ERROR while saving reader num: " + err);
        }
        else {
            console.log('saved reader num successfully');           

        }
        });
    }
    catch(e){
        console.log("ERROR while saving reader num: " + e);
    }
    });

执行上面的代码在控制台中打印更改的值并“成功保存读取器数”,但数据库中的值保持不变! 如果有人能告诉我我做错了什么,我真的很感激。 谢谢!

1 个答案:

答案 0 :(得分:4)

假设你知道索引,你可以这样做:

var update = {};

update['readersNum.' + index] = 1; // update now has property like `readersNum.3`

Posts.update({"readerID":readerID},{$inc: update},{upsert:true,safe:true}, function(err){ console.log(err); });