Je bent niet ver van de oplossing:
De aggregaatfunctie duurt:.aggregate(List<DBObject>)
Maar met de JSON.parse die u wilt gebruiken, kunt u erin typen, als u een lijst in uw zoekopdracht heeft, dus geen probleem
String query="[....}";
List<DBObject> q= (List<DBObject>)JSON.parse(query);
Iterable<DBObject> result=new MongoClient().getDatabase("db").getCollection("coll").aggregate(q).results();`
De resultaten kunnen dan worden herhaald.