我正在使用Mongo DB启动新的Java Play Project。我看了玩游戏!文档,但没有Mongo Java异步驱动程序。仅提及Scala反应性驱动程序。因此,有许多类似的问题,但它们都过时了。
现在以异步方式处理mongo db的最佳方法是什么?
假设我只有一个带有订单的文档收集
最后我设法做到了。为其他程序员发布代码。该代码使用异步驱动程序转到Mongo,并带有数据库名称的JSON。
public class MyController extends Controller {
public CompletionStage<Result> getDBNames() throws InterruptedException {
CompletionStage<List<String>> mongoDBNames = new MongoServiceWithPromises().getMongoDBNames();
return mongoDBNames.thenApply(stringListToJson);
}
Function<List<String>, Result> stringListToJson = obj -> {
JsonNode jsonNode = Json.toJson(obj);
return ok(jsonNode);
};
}
public class MongoServiceWithPromises {
// Open the client
private MongoClient mongoClient = MongoClients.create(new ConnectionString("mongodb://localhost:27017"));
public CompletionStage<List<String>> getMongoDBNames() {
final CompletableFuture<List<String>> future = new CompletableFuture<>();
final SingleResultCallback<List<String>> callback = (dbNames, cb) -> {
if (cb == null) {
future.complete(dbNames);
} else {
future.completeExceptionally(cb);
}
};
mongoClient.listDatabaseNames().into(new ArrayList<>(), callback);
return future;
}
}