如何在Mongoose中增加Number值?

时间:2017-01-03 13:05:44

标签: node.js mongodb mongoose

StackOverflow的人,我正在燃烧这个问题,我该如何增加一个 猫鼬的数值?我已经尝试了下面的代码,虽然它不起作用。我试图在提交表单时将值增加1。以下是我的代码:

app.post('/like', function (req, res) {
    var id = req.body.id;
    var query = {_id: id};
    var post = Meme.findOne(query);
    Meme.findOneAndUpdate(post, post.likes: post.likes+1)
});

非常感谢你的宝贵帮助!

4 个答案:

答案 0 :(得分:34)

您可以将$inc用于此目的。

试试这个:

var id = req.body.id;
Meme.findOneAndUpdate({_id :id}, {$inc : {'post.likes' : 1}}).exec(...);

有关$ inc的更多信息,请阅读MongoDB $inc documentation

答案 1 :(得分:4)

在猫鼬版本5中,需要附加选项“ useFindAndModify”:

 // Make Mongoose use mongoDB's `findOneAndUpdate()`. Note that this option is `true`
 // by default, you need to set it to false.
 mongoose.set('useFindAndModify', false);


 Meme.findOneAndUpdate( {_id: res._id}, 
      {$inc : {'UID' : 1}}, 
      {new: true}, 
      function(err, response) { 
           // do something
      });

Mongoose Depreciation Doc

答案 2 :(得分:2)

Meme.findOneAndUpdate({ _id: res._id }, { $inc: {'post.like': 1 } }, {new: true },function(err, response) {
 if (err) {
 callback(err);
} else {
 callback(response);
}

Hope this link help to find your solution

答案 3 :(得分:0)

您也可以尝试此操作,我使用此查询来喜欢该帖子

app.put('/like', (req, res) => {
    Meme.findByIdAndUpdate(req.body.postId,{
    $push:{likes: req.user._id}
    }, {
        new: true
    }).exec((err, result) => {
        if(err){
            return res.status(400).json({error: err})
        }else{
            res.json(result)
        }
    })
})