Database

[{"student":{name:"Rahul",age:18,department:"CSE",section:"B"},"sequence":0,"student_ref":"AUTCSE024","college":"AUT"},{"student":{name:"Rahul",age:18,department:"CSE",section:"A"},"sequence":1,"student_ref":"AUTCSE024","college":"AUT"},{"student":{name:"Kumar",age:18,department:"IT",section:"A"},"sequence":0,"student_ref":"AUTITE011","college":"AUT"},{"student":{name:"Kumar",age:18,department:"IT",section:"C"},"sequence":1,"student_ref":"AUTITE011","college":"AUT"},{"student":{name:"Praveen",age:18,department:"IT",section:"C"},"sequence":0,"student_ref":"AUTITE016","college":"AUT"},{"student":{name:"Praveen",age:18,department:"IT",section:"C"},"sequence":1,"student_ref":"AUTITE016","college":"AUT"}]

Query

db.collection.aggregate([{"$match":{"student.department":"IT"}},{"$lookup":{"from":"collection","let":{"student_ref":"$student_ref"},"pipeline":[{$match:{$expr:{$and:[{$eq:["$$student_ref","$student_ref"]},/** put your filtering condition here too*/{$eq:["$student.department","IT"]}]}}},{"$group":{"_id":"$student_ref","maxSeqNum":{"$max":"$sequence"}}}],"as":"maxSeqNumLookup"}},{"$unwind":"$maxSeqNumLookup"},{$match:{/** get only the student record with max sequence number*/$expr:{$eq:["$maxSeqNumLookup.maxSeqNum","$sequence"]}}},{"$project":{/** formatting the final output*/"student":1,"sequence":"$maxSeqNumLookup.maxSeqNum","student_ref":1,"college":1}}])

Result