Database

[{"dId":"d_155","pId":"5f4cb595cff47e0001b20882","sId":"825","paramName":"Utility_Air_Flow","avg":488270.454545455,"count":NumberLong(220),"date":ISODate("2020-09-03T18:30:00.000Z"),"dataPerHour":{"19":{"min":8399.0,"max":995990.0,"avg":488270.454545455,"count":NumberLong(220),"values":[{"paramValue":"90235","time":ISODate("2020-09-04T13:37:07.000Z")},{"paramValue":"272297","time":ISODate("2020-09-04T13:37:14.000Z")}]},"20":{"min":8399.0,"max":995990.0,"avg":488270.454545455,"count":NumberLong(220),"values":[{"paramValue":"90235","time":ISODate("2020-09-04T13:37:07.000Z")},{"paramValue":"272297","time":ISODate("2020-09-04T13:37:14.000Z")}]}},"_class":"org.nec.iotplatform.entities.RawData"}]

Query

db.collection.aggregate([{$project:{dataPerHour:{$objectToArray:"$dataPerHour"}}},{$project:{"average":{"$divide":[{$reduce:{input:"$dataPerHour",initialValue:0,in:{"$add":["$$value",{"$multiply":["$$this.v.count","$$this.v.avg"]}]}}},{$reduce:{input:"$dataPerHour",initialValue:0,in:{"$add":["$$value","$$this.v.count"]}}}]}}}])

Result