Database
[{"reading_ts":ISODate("2019-01-01"),"points":2.3,"user_id":2},{"reading_ts":ISODate("2019-01-01"),"points":5.2,"user_id":2},{"reading_ts":ISODate("2019-01-01"),"points":5.8,"user_id":2},{"reading_ts":ISODate("2019-01-10"),"points":2.3,"user_id":2},{"reading_ts":ISODate("2019-01-10"),"points":16,"user_id":2},{"reading_ts":ISODate("2019-01-02"),"points":0.5,"user_id":2},{"reading_ts":ISODate("2019-01-21"),"points":28.3,"user_id":2},{"reading_ts":ISODate("2019-01-01"),"points":1.1,"user_id":1}]
Query
db.collection.aggregate([{"$match":{"reading_ts":{"$gte":ISODate("2019-01-01"),"$lte":ISODate("2019-01-30")}}},{"$group":{"_id":{"user":"$user_id","day":{"$dayOfMonth":"$reading_ts"}},"max":{"$max":"$points"}}},{"$bucket":{"groupBy":"$max","boundaries":[0,10,20],"default":20,"output":{"users":{"$sum":1},}}}])