java - Mongodb 异步与同步 Java 驱动程序

标签 java mongodb asynchronous

我对 Mongodb 的 Java 驱动程序感到很困惑。读书官方documentation看来您可以使用普通的 MondoDB 驱动程序或 MongoDB 异步驱动程序。

第一个问题是:我可以在同一个应用程序中同时使用两者还是必须选择一个?

尝试使用 Async 驱动程序时,我发现以前(使用普通驱动程序)做的事情现在有点迷失了。例如,我曾经这样做过:

FindIterable<Document> iterable = db.getCollection("my_coll").find(query);
String json = JSON.serialize(iterable);

现在我真的不知道如何将结果转换为 json 字符串,因为它们没有包含 JSON来自异步驱动程序的类。 第二个问题:如果我不能同时使用两个驱动程序,我该如何序列化 FindIterable<Document> ?

最佳答案

答案是:

  • 是的,您当然可以同时使用这两种驱动程序。事实上,如果您真的关心应用程序的性能,您应该将 Sync 驱动程序用于那些需要 MongoDB 响应的操作(如 find())。您将为那些您并不真正需要的异步驱动程序使用它,以执行“即发即弃”操作(如插入或更新)。
  • 序列化问题从上面得到了答案。如果您收到响应,则表明您正在使用同步驱动程序,因此您可以继续使用 JSON 类:

JSON.serialize(iterable);

关于java - Mongodb 异步与同步 Java 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33174655/

相关文章:

java - MongoDB 在不知道键的情况下搜索嵌套对象

javascript - 返回 JavaScript Promise 拒绝的已完成值

mongodb - golang : *mongo.数据库没有字段或方法CreateCollection

mongodb - 使用 MongoDB Compass 导出聚合数据

python - 异步上下文管理器

javascript - Promise 处理程序 (.then/.catch/.finally) 总是异步的吗?

java - 使用 Hortonworks 架构注册表读取 Java 应用程序中的 Avro 文件

Java集合排序

java - Android 应用启动后掉落

java - JTextArea 中是否可以具有非可变尺寸?