我在 mongo 中有一个集合,其中包含大约 50 万个文档,我想要从中获得具有特定 id 的特定字段的总和。
例如:
单个文档有一个meter_id和总功率字段。 所以我想分离具有相同电表 id 的文档,然后计算具有相同电表 id 的每个集合的总功率。
示例文档:
_id:5e444fc1c5e86c84d1044aeb
meter_id:"jhk"
date:2017-06-17T18:39:28.795+00:00
activePower:Object
unit:"kwh"
Active Power L1:"0"
Active Power L2:"0"
Active Power L3:"0"
Total Active Power:"5"
reactivePower:Object
apparentPower:Object
frequency:Object
thd:Object
现在我必须按电表 ID 进行分组,并想要总有功功率字段的总和,这是有功功率对象的键值
预期输出:
{ _id: 'jhk', total: 69236, totalAmount: }
最佳答案
试试这个:
查询:
db.collection.aggregate([{$group :{_id : '$meter_id', total : {$sum : { $toInt : '$activePower.TotalActivePower'}}}}])
注意:您的 $activePower.TotalActivePower
字段似乎是一个字符串,如果是字符串,那么我们需要使用 $toInt
来将其转换为数字,以便计算与 _id
条件匹配的所有文档的总和。
关于node.js - 如何为以下条件编写mongo聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241327/