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

时间:2015-12-08 12:03:07

标签: java mongodb mongodb-query mongodb-java

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

  1. 核心驱动程序
  2. MongoDB驱动程序
  3. MongoDB异步驱动程序
  4. drivers description page给出了每一个的简要描述,但没有提供关于何时应该使用它们的进一步解释。我的问题:请你澄清一下使用它们的案例是什么?什么时候我应该更喜欢一个,当我必须/必须使用特定的驱动程序选项时?

1 个答案:

答案 0 :(得分:5)

<强> TL; DR

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

MongoDB常规驱动程序

可用于搜索,创建,读取,更新和删除文档的常规驱动程序。只要未返回结果或未执行操作(同步行为),find(...)updateMany(...)deleteMany(...)和类似方法将挂起。这是大多数程序使用的驱动程序,并且在大多数情况下都很好。

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

collection.insertOne(doc);
//Do something here.
System.out.println("Inserted!")

MongoDB异步驱动程序

您可以使用其他类型的驱动程序来搜索,创建,读取,更新和删除文档。此驱动程序提供的方法与常规驱动程序(find(...)updateMany(...)deleteMany(...)等)相似。

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

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

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...")

有关更多信息,请阅读this

MongoDB核心驱动程序

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