Database

[{"TeacherID":212,"StudentID":1},{"TeacherID":212,"StudentID":2},{"TeacherID":123,"StudentID":3},{"TeacherID":223,"StudentID":4},{"TeacherID":212,"StudentID":2},{"TeacherID":223,"StudentID":3},{"TeacherID":212,"StudentID":2},{"TeacherID":212,"StudentID":3},{"TeacherID":123,"StudentID":2},{"TeacherID":123,"StudentID":4}]

Query

db.collection.aggregate([{$match:{"TeacherID":212}},{$group:{_id:"$StudentID",occurrence:{$sum:1},StudentID:{"$first":"$StudentID"}}},{$sort:{"occurrence":-1}}])

Result