Dobře, je to docela přímočaré a potřeboval jsem si trochu vyčistit hlavu, abych si toho všiml. Složitý dotaz lze rozdělit na objekt Json.
JsonObject queryParam = new JsonObject()
.put("id", new JsonObject().put("$in", listOfIds)); // ArrayList<Long>
Mohu pokračovat a použít jednoduchý vyhledávací dotaz s tímto queryParam.
mongoClient.find("collection", queryParam, asyncResult -> {
// do something
});