Ok, è piuttosto semplice e avevo solo bisogno di schiarirmi un po' le idee per notarlo. La query complessa può essere suddivisa in un oggetto Json.
JsonObject queryParam = new JsonObject()
.put("id", new JsonObject().put("$in", listOfIds)); // ArrayList<Long>
Posso andare avanti e utilizzare la semplice query di ricerca con questo queryParam.
mongoClient.find("collection", queryParam, asyncResult -> {
// do something
});