创建一个可以对整个表执行特定求和的函数

时间:2018-02-19 07:08:44

标签: mongodb mongoose

我有一个Mongo DB数据集,如下所示:

{
    "_id" : ObjectId("5a8a75cdec129c86c6a2aaca"),
    "asset" : "121",
    "A" : 6,
    "C" : 12,
    "B" : 4,
    "D" : 8,
    "finalAB" : "",
    "finalCD" : "",
},
{
    "_id" : ObjectId("5a8a75cdec129c86c6a2aaca"),
    "asset" : "122",
    "A" : 8,
    "C" : 14,
    "B" : 6,
    "D" : 10,
    "finalAB" : "",
    "finalCD" : "",
}......upto 4k Entry Like this

现在我想创建MongoDB函数,它可以对“finalAB”进行整表计算。 “finalCD”

  

注意:finalAB = A + B且finalCD = C + D.

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

您无法在此处使用update,因为您在更新中引用了其他字段,但您可以尝试使用聚合框架:

db.col.aggregate([
    {
        $addFields: {
            finalAB: { $add: [ "$A", "$B" ] },
            finalCD: { $add: [ "$C", "$D" ] },
        }
    },
    {
        $out: "col"
    }
])

$addFields只需用新值替换finalABfinalCD$out是一种将聚合输出重定向到新集合的方法。这就是如何替换(更新)现有集合的方法。

答案 1 :(得分:0)

使用聚合查询:

       app.get("/getTotal",function(req,res){   

             YourModel.aggregate([
               {   
                    $addFields: {
                       finalAB: { $add: [ "$A", "$B" ] },
                       finalCD: { $add: [ "$C", "$D" ] },
                    }
              },
              { 
                 $group:{ _id:null,
                          finalAB:{ $sum: "$finalAB"},
                          finalCD:{ $sum: "$finalCD"}
                        }
              }
             ],function(err,result){
                     res.json(result);   
              });

         });

使用完整链接:https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/