node.js - 如何为以下条件编写mongo聚合函数

标签 node.js mongodb mongoose aggregation-framework

我在 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'}}}}])

测试: MongoDB-Playground

注意:您的 $activePower.TotalActivePower 字段似乎是一个字符串,如果是字符串,那么我们需要使用 $toInt 来将其转换为数字,以便计算与 _id 条件匹配的所有文档的总和。

关于node.js - 如何为以下条件编写mongo聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241327/

相关文章:

node.js - Express 应用程序的 NodeJS DB2 连接池

node.js - 使用phoenix_api_docs

javascript - 将普通对象转换到 Mongoose 文档

node.js - 使用 TypeORM 进行集成测试

javascript - 发送后无法删除 header

mongodb $in 限制

javascript - 从 MongoDB 文档返回单个字段

java - 如何为每个 Mongo 文档分配一个用户(字符串值)?

javascript - 从对象数组 mongoose 中的对象中删除属性

javascript - findOne 检索到的对象实例没有任何方法