Você não está longe da solução:
A função agregada usa:
.aggregate(List<DBObject>)
Mas o JSON.parse que você deseja usar permite que você digite nele, se você tiver uma lista em sua consulta, então não há problema String query="[....}";
List<DBObject> q= (List<DBObject>)JSON.parse(query);
Iterable<DBObject> result=new MongoClient().getDatabase("db").getCollection("coll").aggregate(q).results();`
Os resultados podem ser iterados.