MongoDB Java驱动程序有三个不同的驱动程序选项:
drivers description page给出了它们每一个的简要描述,但没有提供关于我应该何时使用它们的进一步解释。我的问题是:您能不能澄清一下每种方法的用法?什么时候我应该选择一个而不是第二个,当我必须/必须使用特定的驱动程序选项时?
发布于 2015-12-08 20:57:56
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 /驱动程序,否则你不应该使用核心驱动程序。
https://stackoverflow.com/questions/34155418
复制相似问题