Database
[{"user_id":"A","date":ISODate("2020-04-01"),"hourly_info":{"metric_one":{"0":4,"1":7,"2":8,"3":5,"4":7,"5":8,"6":0,"7":9,"8":1,"9":12,"10":1,"11":3,"12":14,"13":5,"14":6,"15":1,"16":2,"17":9,"18":22,"19":30,"20":32,"21":1,"22":21,"23":43}}},{"user_id":"A","date":ISODate("2020-04-01"),"hourly_info":{"metric_one":{"0":4,"1":7,"2":8,"3":5,"4":7,"5":8,"6":0,"7":9,"8":1,"9":12,"10":1,"11":3,"12":14,"13":5,"14":6,"15":1,"16":2,"17":9,"18":22,"19":30,"20":32,"21":1,"22":21,"23":43}}}]
Query
db.collection.aggregate([{"$match":{"user_id":"A","date":{"$gte":ISODate("2020-04-01"),"$lte":ISODate("2020-04-08")}}},{"$addFields":{"hourly_info.metric_one":{$objectToArray:"$hourly_info.metric_one"}}},{"$unwind":"$hourly_info.metric_one"},{"$group":{_id:{"user":"$user_id","hour":"$hourly_info.metric_one.k"},"total":{"$sum":"$hourly_info.metric_one.v"}}},{"$group":{"_id":"$_id.user","hourly":{"$push":{"k":"$_id.hour","v":"$total"}}}},{"$addFields":{"hourly":{"$arrayToObject":"$hourly"}}}])