【问题标题】:increase value in an array by index variable with mongoose mongodb nodejs使用 mongoose mongodb nodejs 通过索引变量增加数组中的值
【发布时间】:2012-06-11 03:07:20
【问题描述】:

我有一个数字数组:

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);
    }
    });

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

    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); });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 2014-02-18
      • 2017-07-02
      • 2020-12-08
      相关资源
      最近更新 更多