繁体   English   中英

Node.js MongoDb聚合对特定字段进行总计和总计

[英]Node.js MongoDb aggregation Sum all and Sum all with specific field

这是我的收藏夹[测试]。

{"_id" : "Test1", "enabled": "on", "value" : 10},
{"_id" : "Test2", "enabled": "on", "value" : 50},
{"_id" : "Test3", "enabled": "on", "value" : 10},
{"_id" : "Test4", "value" : 5},
{"_id" : "Test5", "value" : 2}

我想使用"enabled":"on"来获取字段的所有总价值和总价值,如下所示:

所需结果:

[{_id:null,totalValue:77,totalEnabled:70}]

这是我到目前为止所没有的,但是没有运气。

db.collection('test').aggregate({
    $group: {
          _id: null,
          totalValue : {
              $sum: "$value"
          },
          totalEnabled: $sum : {"enabled":{$exists:true}}
      }
  }, function(err, result) {
    if (err) return console.dir(err)

    console.log(result);
});

您很亲近,但是$ exists的功能不是聚合,而是具有其他功能。 您正在寻找的是$ cond

db.items.aggregate([
    {$group: { 
        _id: null,
         totalValue: {$sum: "$value"}, 
         enabledValue: {$sum: {
             $cond: [
                 // Condition to test 
                 {$eq: ["$enabled", "on"] },
                 // True
                 "$value",
                 // False
                 0
            ] 
         }}
    }}
])

用法是根据条件评估为true还是false提供不同的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM