Database

[{"school":"xyz","studentName":"John Doe","grade":"first","Hobbies":["Painting","Singing"],"language":["English"],"sport":"Badminton","totalStudyHours":85},{"school":"xyz","studentName":"Jane Doe","grade":"third","Hobbies":["Painting",],"language":["Spanish"],"sport":"Karate","totalStudyHours":65},{"school":"xyz","studentName":"joey","grade":"first","Hobbies":["Singing"],"language":["English","Italian"],"sport":"Cricket","totalStudyHours":75,"ispassed":true,},{"studentName":"jason","grade":"third","Hobbies":["Painting",],"language":["English","Spanish"],"sport":"Tennis","totalStudyHours":95,"isObtained":true},{"studentName":"mike","grade":"third","Hobbies":["Singing"],"language":["English","Italian"],"sport":"Badminton","totalStudyHours":70,"isObtained":true}]

Query

db.collection.aggregate([{$match:{school:"xyz"}},{$group:{_id:"$grade",values:{$push:{sport:"$sport",language:"$language",Hobbies:"$Hobbies",isObtained:{$cond:[{$eq:["$sport","Badminton"]},true,false]}}}}}])

Result