Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb异步与同步Java驱动程序_Java_Mongodb_Asynchronous - Fatal编程技术网

Mongodb异步与同步Java驱动程序

Mongodb异步与同步Java驱动程序,java,mongodb,asynchronous,Java,Mongodb,Asynchronous,我对Mongodb的java驱动程序很困惑。阅读官方文件,您似乎可以使用普通的MondoDB驱动程序或MongoDB异步驱动程序 第一个问题是:我可以在同一个应用程序中同时使用这两个选项,还是必须选择一个? 尝试使用异步驱动程序时,我发现以前(使用普通驱动程序)所做的事情现在有点迷失了方向。例如,我曾经这样做: FindIterable<Document> iterable = db.getCollection("my_coll").find(query); String json

我对Mongodb的java驱动程序很困惑。阅读官方文件,您似乎可以使用普通的MondoDB驱动程序或MongoDB异步驱动程序

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

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

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())。对于那些不需要异步驱动程序的操作,您可以使用异步驱动程序进行“启动并忘记”操作(如插入或更新)
  • 因此,序列化问题可以从上面得到答案。如果收到响应,则使用的是同步驱动程序,因此可以继续使用
    JSON
    class:

JSON.serialize(iterable)

Sync不会比Async提供总体性能优势,Async也不会比Sync提供总体性能优势。选择使用异步驱动程序的主要优点是,它使您能够执行重叠查询。在某些情况下,如果要执行的多个查询彼此之间不包含数据依赖关系,则可以异步执行它们(重叠),并在同步点一起等待它们的所有结果。