如何在写入MongoDB时使用聚合和求和?

时间:2018-01-10 13:19:32

标签: node.js mongodb mongodb-query aggregation-framework aggregate

我是mongodb,javascript和编码的初学者,我项目的这一部分给了我很多困难。 我已经阅读过mongodb网站的手册,试着从这里看一下我的案例的实际例子,但效果不好。

通缉行动是从网页读取变量的值,并将其中一些变量的总和写入MongoDB中该文档中的单独记录。

首先,我应该在架构,模型还是路线中这样做?

我一直试图在路线上这样做,如下面的例子所示。

router.post('/xxxxxxx', function(req, res){

console.log('function called!!');
 var xxxx = req.body.xxxx;
 var xxxx1 = req.body.xxxx1;
 var xxxx2;
 var score1;
 var score2;
 var score3;
 var score4;
 var score5 = 

 **scoresh.aggregate([

      {$group:{
               score5: {$sum :{
                               score1,
                               score2,
                               score3,
                               score4,**

           }
         }
       }
    }
])

// Validation
req.checkBody('xxxx', 'xxxx').notEmpty();
req.checkBody('xxxx', 'xxxxxxxx').notEmpty();

var errors = req.validationErrors();

if(errors){
    res.render('xxxxxxxxx',{
        errors:errors
    });
} else {
    console.log('succes');
    var newXxxxxx = new xxxxxxxx({
        score1 : req.body.score1,
        score2 : req.body.score2,
        score3 : req.body.score3,
        score4 : req.body.score4,
        score5 : req.body.score5,
        .
        .

 Score.createScore(newScore, function(err, Score){
            if(err) throw err;
            console.log('success');
        });

        req.flash('success_msg', 'Succes.');

        res.redirect('/xxxxx/xxxxx');

}
});
module.exports = router;

如果我将数值(示例33)写入-score5:33-,它会将其写入数据库,但我无法获得其他得分的$ summ到-score5 - 。

希望有经验的人可以帮助我。

1 个答案:

答案 0 :(得分:0)

因为我一直在努力解决这个问题而且我已经解决了问题。而且我认为这不是什么.pretty()但我只是在结束变量并加入了那个parseInt(req.body.score1)+ ... Classy呵呵? ;)好......学习曲线刚开始。希望像我这样新的人可以从中得到一些东西。