Database

[{"_id":ObjectId("608be7c608c7de2367c89638"),"status":true,"gender":"Male","first_name":"Vinter","last_name":"R","dob":"1-2-1999"},{"_id":ObjectId("608be7c608c7de2267c89639"),"status":true,"gender":"Male","first_name":"Ray","last_name":"Morgan","dob":"1-2-2015"},{"_id":ObjectId("608be7c608c7de2367c89640"),"status":true,"gender":"Female","first_name":"Lisa","last_name":"K","dob":"1-2-2010"},{"_id":ObjectId("608be7c608c7de2367c89641"),"status":true,"gender":"Male","first_name":"Messi","last_name":"L","dob":"1-2-2005"}]

Query

db.collection.aggregate([{"$addFields":{"age":{$dateDiff:{startDate:{$toDate:"$dob"},endDate:"$$NOW",unit:"year"}}}},{$bucket:{groupBy:"$age",/** Field to group by*/boundaries:[0,19,25,35],/** Boundaries for the buckets*/default:"Other",/** Bucket id for documents which do not fall into a bucket*/output:{/** Output for each bucket*/"count":{$sum:1},"persons":{$push:"$$CURRENT"}}}},{$project:{_id:0,group:{$switch:{branches:[{case:{$lt:["$_id",19]},then:"0-18"},{case:{$lt:["$_id",25]},then:"19-24"},{case:{$lt:["$_id",35]},then:"25-34"}],default:"35+"}},count:1,persons:1}}])

Result