如何在Mongodb中为字段添加值?

时间:2018-02-11 06:08:28

标签: mongodb

我正在研究计算日常开支的电报机器人。我想创建一个可以为一个字段添加值的命令。问题是,存在多个字段。下面的代码仅在$ inc中只有一行时才有效(或者如果我为它们添加值,但我必须添加一个值)。我怎样才能为“房子”或“服装”增加价值,但不能同时增加两者

router.post('/addExpense', function(req, res){
    Expense.update({
        $inc: {
            house: req.body.house,
            clothing: req.body.clothing
        }
     },
     function(err, expense){
        if(err)
          return res.status(500).send("Problem adding data to db");
        res.status(200).send(expense);
     });
});

2 个答案:

答案 0 :(得分:1)

这样做的一种方法是您可以在更新查询之外检查它是否为空特征。某种方式。

router.post('/addExpense', function(req, res) {
    if (req.body.house) {
        Expense.update({
                $inc: {
                    house: req.body.house,
                    //   clothing: req.body.clothing
                }
            },
            function(err, expense) {
                if (err)
                    return res.status(500).send("Problem adding data to db");
                res.status(200).send(expense);
            });

    } else {
        Expense.update({
                $inc: {
                    // house: req.body.house,
                    clothing: req.body.clothing
                }
            },
            function(err, expense) {
                if (err)
                    return res.status(500).send("Problem adding data to db");
                res.status(200).send(expense);
            });
    }
});

答案 1 :(得分:0)

您可以使用 $ set 更新您希望增加的其他字段和 $ inc 。像这样......

Expense.update({},{
    $inc:{ status1:1 },
    $set:{ status2:1 }
    })

此处您必须将第一个 {} 留空,因为这是选择条件。如果您有任何选择标准,请添加任意内容 您必须在第二个 {} 中写入更新查询,此处 status1 是您希望以1递增 status2的字段是您要更新的字段。这里status2值将设置为1.您可以根据自己的意愿将其设置为任何其他值,只需将该值替换为您的值。