Добре, това е доста ясно и просто трябваше да прочистя малко главата си, за да го забележа. Сложната заявка може да бъде разбита на Json обект.
JsonObject queryParam = new JsonObject()
.put("id", new JsonObject().put("$in", listOfIds)); // ArrayList<Long>
Мога да продължа и да използвам проста заявка за намиране с този queryParam.
mongoClient.find("collection", queryParam, asyncResult -> {
// do something
});