您如何使用 vertx-mongo 客户端执行查找( id : { $in : [ list ] } )

How do you execute a find( id : { $in : [ list ] } ) using vertx-mongo client

Vertx mongo 客户端希望查询参数作为 JSON 对象。到目前为止,我主要做了类似于下面的事情

JsonObject queryParam = new JsonObject().put("id", 123);
mongoClient.find("collection", queryParam, asyncResult -> {
    if (asyncResult.succeeded()) {
        // Do something
        promise.complete();
    } else {
        promise.fail(asyncResult.cause());
    }
});

我会根据自己的需要建立上面的查询参数。

现在我有一项服务可以 returns 我的 ID 列表。我必须在集合中查询那些匹配的 ID。理想情况下 mongo shell 我会做 db.getCollection("collection").find( id: { $in: [1, 2, 3, 4] } )

我检查了 vertx 文档,甚至在 vertx mongoClient.java 文件中搜索了一下。 Google 搜索没有为我提供在 vertx 中执行此操作的解决方案。如何在不编写大量代码的情况下实现这一目标?

好吧,这很简单,我只需要稍微清醒一下就能注意到这一点。复杂的查询可以分解成一个Json对象。

JsonObject queryParam = new JsonObject()
    .put("id", new JsonObject().put("$in", listOfIds));    // ArrayList<Long>

我可以继续使用带有此查询参数的简单查找查询。

mongoClient.find("collection", queryParam, asyncResult -> {
    // do something
});