首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB Java驱动程序: MongoCore驱动程序、MongoDB驱动程序和MongoDB异步驱动程序

MongoDB Java驱动程序: MongoCore驱动程序、MongoDB驱动程序和MongoDB异步驱动程序
EN

Stack Overflow用户
提问于 2015-12-08 20:03:07
回答 1查看 6.4K关注 0票数 9

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

  1. 核心驱动程序
  2. MongoDB驱动程序
  3. MongoDB异步驱动程序

drivers description page给出了它们每一个的简要描述,但没有提供关于我应该何时使用它们的进一步解释。我的问题是:您能不能澄清一下每种方法的用法?什么时候我应该选择一个而不是第二个,当我必须/必须使用特定的驱动程序选项时?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-08 20:57:56

TL;DR

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

MongoDB常规驱动程序

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

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

代码语言:javascript
复制
collection.insertOne(doc);
//Do something here.
System.out.println("Inserted!")

MongoDB异步驱动程序

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

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

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

代码语言:javascript
复制
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 /驱动程序,否则你不应该使用核心驱动程序。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34155418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档