あなたは解決策からそう遠くはありません:
集計関数は次のようになります:.aggregate(List<DBObject>)
ただし、クエリにリストがある場合は、使用するJSON.parseに型キャストできるため、問題はありません
String query="[....}";
List<DBObject> q= (List<DBObject>)JSON.parse(query);
Iterable<DBObject> result=new MongoClient().getDatabase("db").getCollection("coll").aggregate(q).results();`
結果は繰り返すことができます。