MongoDB Java驱动程序:MongoCore驱动程序与MongoDB驱动程序与MongoDB异步驱动程序

MongoDB Java驱动程序:MongoCore驱动程序与MongoDB驱动程序与MongoDB异步驱动程序,java,mongodb,mongodb-query,mongodb-java,Java,Mongodb,Mongodb Query,Mongodb Java,MongoDB Java驱动程序有三种不同的驱动程序选项: 核心驱动器 MongoDB驱动程序 MongoDB异步驱动程序 对每一个都进行了简要描述,但没有进一步解释我应该何时使用它们。我的问题:请你澄清一下,每一个案例都有哪些用途?什么时候我应该选择一个而不是第二个,什么时候我必须/必须使用特定的驱动程序选项;博士: 如果操作缓慢,请使用异步驱动程序,或者在大多数情况下使用常规驱动程序。你不应该使用核心驱动程序 MongoDB常规驱动程序: 通用驱动程序,可用于搜索、创建、读取、更新和删除文档

MongoDB Java驱动程序有三种不同的驱动程序选项:

  • 核心驱动器
  • MongoDB驱动程序
  • MongoDB异步驱动程序

  • 对每一个都进行了简要描述,但没有进一步解释我应该何时使用它们。我的问题:请你澄清一下,每一个案例都有哪些用途?什么时候我应该选择一个而不是第二个,什么时候我必须/必须使用特定的驱动程序选项;博士:

    如果操作缓慢,请使用异步驱动程序,或者在大多数情况下使用常规驱动程序。你不应该使用核心驱动程序

    MongoDB常规驱动程序

    通用驱动程序,可用于搜索、创建、读取、更新和删除文档。只要结果未返回或操作未完成(同步行为),查找(…)、
    updateMany(…)
    deleteMany(…)
    和类似方法就会挂起。这是大多数程序使用的驱动程序,在大多数情况下都很好

    以下是插入单个文档的示例:

    collection.insertOne(doc);
    //Do something here.
    System.out.println("Inserted!")
    
    collection.insertOne(doc, new SingleResultCallback<Void>() {
        @Override
        public void onResult(final Void result, final Throwable t) {
            //Do something here.
            System.out.println("Inserted!");
        }
    });
    // Do something to show that the Document was not inserted yet.
    System.out.println("Inserting...")
    
    MongoDB异步驱动程序

    另一种类型的驱动程序,可用于搜索、创建、读取、更新和删除文档。此驱动程序提供了与常规驱动程序类似的方法(
    find(…)
    updateMany(…)
    deleteMany(…)
    等)

    与常规驱动程序的区别在于,主线程不会挂起,因为异步驱动程序以异步方式发送结果。当操作可能需要很长时间(需要处理大量数据、高延迟、查询未索引的字段等),并且您不想管理多个线程时,可以使用此驱动程序

    以下是插入单个文档时的回调示例:

    collection.insertOne(doc);
    //Do something here.
    System.out.println("Inserted!")
    
    collection.insertOne(doc, new SingleResultCallback<Void>() {
        @Override
        public void onResult(final Void result, final Throwable t) {
            //Do something here.
            System.out.println("Inserted!");
        }
    });
    // Do something to show that the Document was not inserted yet.
    System.out.println("Inserting...")
    
    collection.insertOne(doc,newsingleresultcallback(){
    @凌驾
    公开作废结果(最终作废结果、最终可丢弃结果){
    //在这里做点什么。
    System.out.println(“插入!”);
    }
    });
    //执行一些操作以显示文档尚未插入。
    System.out.println(“插入…”)
    
    有关更多信息,请阅读

    MongoDB核心驱动程序


    常规和异步驱动程序的基础层。它包含用于执行常规和异步驱动程序通用的所有操作的低级方法。除非您正在为MongoDB制作新的API/驱动程序,否则不应使用核心驱动程序。

    感谢您提供详细的答案。关于
    async
    regular
    驱动程序的比较,
    async
    驱动程序的对立面是什么?为什么不总是使用
    async
    ?还有一个子问题。在上,除了mongodb驱动核心之外,还有两种不同的常规驱动程序:MongoJava驱动程序和mongodb驱动程序。这两个都是Java驱动程序,那么前两个驱动程序之间的区别是什么呢?根据这个链接,他们说mongo Java驱动程序是一个一体化的jar(它嵌入了核心驱动程序和bson)。@Sharadr是的,这是正确的。BSON库和核心驱动程序作为常规驱动程序和异步驱动程序的依赖项。当他们提到
    mongojava驱动程序
    是一个“一体式jar”时,他们的意思是将常规驱动程序及其依赖项(核心驱动程序和BSON库)打包在同一个jar中。