Database

db={"Test":[{_id:1,name:"test1"}],"TestScheduled":[{_id:2,testId:1,batchIds:[1,2]}],Batch:[{_id:1,name:"batch 1"},{_id:2,name:"batch 2"}]}

Query

db.Test.aggregate([{"$lookup":{"from":"TestScheduled","let":{"testId":"$_id"},"pipeline":[{"$match":{"$expr":{"$eq":["$testId","$$testId"]}}},{"$lookup":{"from":"Batch","let":{"batchIds":"$batchIds"},"pipeline":[{"$match":{"$expr":{"$in":["$_id","$$batchIds"]}}}],"as":"batches"}}],"as":"test_scheduled"}}])

Result