Node.js MongoDb聚合总和与特定字段总和

这是我的collections[testing]。

{"_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); }); 

你近了,但$存在不起作用是聚合和具有不同的function。 你要找的是$ 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来提供不同的值。