Database

[{"uid":1,"score":10},{"uid":2,"score":11},{"uid":3,"score":1},{"uid":4,"score":6},{"uid":5,"score":2},{"uid":6,"score":3},{"uid":7,"score":8},{"uid":8,"score":10}]

Query

db.collection.aggregate([{"$sort":{score:-1}},{$bucket:{groupBy:"$score",boundaries:[0,4,7],default:7,output:{"total":{$sum:1},"top_frustrated":{$push:{"uid":"$uid","score":"$score"}},},}},{"$project":{total:1,top_frustrated:{"$slice":["$top_frustrated",3]}}}])

Result