Database
db={"courseView":[{"_id":1,"combined":["A","B"],"electiveCourseIds":[],"mandatoryCourseIds":["A","B"]},{"_id":2,"combined":null,"mandatoryCourseIds":["B","C"]},{"_id":3,"combined":null,"mandatoryCourseIds":["C","D"]},{"_id":4,"combined":null,"electiveCourseIds":["D"]},{"_id":5,"combined":null,"mandatoryCourseIds":["D"]},{"_id":6,"combined":null,"electiveCourseIds":["F"]},{"_id":7,"combined":["F","G"],"electiveCourseIds":["F"],"mandatoryCourseIds":["G"]},{"_id":8,"combined":null,"mandatoryCourseIds":["H"]},{"_id":9,"combined":null,"electiveCourseIds":["H","I"]}]}
Query
db.courseView.aggregate([{"$match":{_id:{$in:[1,8]}}},{$graphLookup:{from:"courseView",startWith:"$combined",connectFromField:"combined",connectToField:"combined",as:"recursiveInfo"}},{"$unwind":"$recursiveInfo"},{"$replaceRoot":{"newRoot":"$recursiveInfo"}}])