Database

[{"name":"a","sample":"x","count":45},{"name":"a","sample":"y","count":32},{"name":"b","sample":"y","count":32},{"name":"b","sample":"y","count":2},{"name":"c","sample":"z","count":57},{"name":"c","sample":"y","count":32},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18},{"name":"a","sample":"x","count":18}]

Query

db.collection.aggregate([{$set:{"rownum":{"$function":{"body":"function() {try {row_number+= 1;} catch (e) {row_number= 0;}return row_number;}","args":[],"lang":"js"}}}},{$bucket:{groupBy:"$rownum",/** Field to group by*/boundaries:[1,4,7,11,14,17,21,25],/** Boundaries for the buckets*/default:"Other",/** Bucket id for documents which do not fall into a bucket*/output:{/** Output for each bucket*/"countSUM":{$sum:"$count"},"averagePrice":{$avg:"$count"}}}}])

Result