Vous n'êtes pas loin de la solution :
La fonction d'agrégation prend :.aggregate(List<DBObject>)
Mais le JSON.parse que vous souhaitez utiliser vous permet de le transtyper, si vous avez une liste dans votre requête, donc pas de problème
String query="[....}";
List<DBObject> q= (List<DBObject>)JSON.parse(query);
Iterable<DBObject> result=new MongoClient().getDatabase("db").getCollection("coll").aggregate(q).results();`
Les résultats peuvent ensuite être itérés.