如何在.update()和$ set猫鼬内增加属性的值(整数)?

时间:2018-06-25 11:02:47

标签: arrays node.js mongodb object mongoose

我正在尝试使用findOne()在数据库中查找文档,然后在该文档中搜索包含对象的options数组。然后,我检查对象的属性是否等于pollOption,然后我想将该对象的另一个属性votes递增1,但是我无法获得该属性的值,因此可以对其进行递增。请帮忙。

Routes.js

router.post('/submitVote', function(req, res){
    const {pollId, pollOption} = req.body;
    Polls.findOne({_id: pollId}
    ).update({'options.option': pollOption}, {'$set': {
            'options.$.votes': '',  // INCREMENT BY 1 //
        }}, function(err){
            if(err){
                return console.log(err);
            } else {
                return res.send('success');
            }
        });
});

样本模型:

{
    "_id": {
        "$oid": "5b2ec4852a51d06734f71e79"
    },
    "options": [
        {
            "option": "Amazing!",
            "votes": 0
        },
        {
            "option": "Good.",
            "votes": 0
        }
    ],
    "creator": "Guest",
    "name": "Rate this website!",
    "__v": 0
}

Polls.js-模式

var mongoose = require('mongoose');

const Poll = new mongoose.Schema({
    name: { type: String, required: true },
    options: { type: Array, required: true },
    creator: { type: String, default: 'Guest' }
});

const Polls = mongoose.model('Polls', Poll);

module.exports = Polls;

0 个答案:

没有答案