Mongodb异步与同步Java驱动程序
我对Mongodb的java驱动程序很困惑。阅读官方文件,您似乎可以使用普通的MondoDB驱动程序或MongoDB异步驱动程序 第一个问题是:我可以在同一个应用程序中同时使用这两个选项,还是必须选择一个? 尝试使用异步驱动程序时,我发现以前(使用普通驱动程序)所做的事情现在有点迷失了方向。例如,我曾经这样做:Mongodb异步与同步Java驱动程序,java,mongodb,asynchronous,Java,Mongodb,Asynchronous,我对Mongodb的java驱动程序很困惑。阅读官方文件,您似乎可以使用普通的MondoDB驱动程序或MongoDB异步驱动程序 第一个问题是:我可以在同一个应用程序中同时使用这两个选项,还是必须选择一个? 尝试使用异步驱动程序时,我发现以前(使用普通驱动程序)所做的事情现在有点迷失了方向。例如,我曾经这样做: FindIterable<Document> iterable = db.getCollection("my_coll").find(query); String json
FindIterable<Document> iterable = db.getCollection("my_coll").find(query);
String json = JSON.serialize(iterable);
FindIterable iterable=db.getCollection(“my_coll”).find(查询);
字符串json=json.serialize(iterable);
现在我真的不知道如何将结果转换成json字符串,因为它们没有包含异步驱动程序中的json
类。
第二个问题:如果我不能同时使用两个驱动程序,那么我如何序列化FindTable
?答案如下:
- 是的,当然你可以同时使用两种驱动程序。事实上,如果您真的关心应用程序的性能,您应该使用同步驱动程序来执行那些需要MongoDB响应的操作(如find())。对于那些不需要异步驱动程序的操作,您可以使用异步驱动程序进行“启动并忘记”操作(如插入或更新)
- 因此,序列化问题可以从上面得到答案。如果收到响应,则使用的是同步驱动程序,因此可以继续使用
class:JSON
JSON.serialize(iterable)代码>Sync不会比Async提供总体性能优势,Async也不会比Sync提供总体性能优势。选择使用异步驱动程序的主要优点是,它使您能够执行重叠查询。在某些情况下,如果要执行的多个查询彼此之间不包含数据依赖关系,则可以异步执行它们(重叠),并在同步点一起等待它们的所有结果。