了解以下版本中的新功能:
5.2.1 中的新功能
5.2.1 驾驶员补丁发布包括以下更改:
- 修复了导致使用 Quarkus 构建的应用程序在初始化 - libmongocrypt绑定时抛出- java.lang.UnsatisfiedLinkError的问题。
- 修复导致 - mongodb-driver-core包在部署到 OSGi 运行时时出错的问题。- Import-Package- org.mongodb:mongodb-driver-core清单属性不再需要- com.oracle.svm.core.annotate.*包。
5.2 中的新增功能
5.2驾驶员发布包括以下更改、修复和功能:
- 连接 URI 中托管名和客户端选项之间的正斜杠 ( - /) 字符是可选的。 驾驶员以相同的方式解析以下连接 URI 示例:- // Connection URI with delimiting forward-slash - String uri = "mongodb://example.com/?w=majority"; - // Connection URI without delimiting forward-slash - String uri = "mongodb://example.com?w=majority"; 
- 允许设置客户端操作超时 (CSOT)。此功能允许您在 - MongoClient实例上设立单个超时,该超时适用于使用该客户端执行的所有操作。要学习;了解更多信息,请参阅 限制服务器执行时间指南。- 重要- 已弃用的超时选项- 以下超时选项已弃用: - waitQueueTimeoutMS
- socketTimeoutMS
- wTimeoutMS
- maxTimeMS
- maxCommitTimeMS
 - 使用 CSOT功能来替换这些选项的功能。 
- 添加 - SearchIndexType类,您可以在构造- SearchIndexModel实例时传递该类。此更改允许您在创建Atlas Search或 Vector Search索引时指定索引类型。要学习;了解更多信息,请参阅 索引指南中的MongoDB搜索和向量搜索索引。
- 将实施 - SCRAM-SHA-1和- SCRAM-SHA-256身份验证机制的算法委托给已配置的 JCA提供商来实现。 此更改意味着您的应用程序可以使用已配置的 FIPS 兼容 JCA提供商来提供更高级别的安全性。
- 修改 mongodb-crypt 依赖项版本控制以匹配Java虚拟机(JVM)驱动程序的版本控制。未来版本的 - mongodb-crypt将与驾驶员一起发布,并股票相同的版本号。您必须将- mongodb-crypt依赖项升级到 v5。2。0在为此发布升级驾驶员时。要学习;了解更多信息,请参阅《正在使用的加密》指南。
- 由于在所有支持的平台上实施了原生加密,因此性能得到提升。 以下列表描述了根据您的操作系统实现此改进所需的操作: - Windows :将 - mongodb-crypt版本升级到 v 5.2.0 。
- Mac :将 - mongodb-crypt版本升级到 v 5.2.0 。
- Linux :直接在文件系统上安装 - libmongocrypt.so,而不是使用- mongodb-cryptJAR文件中捆绑的文件。 您可以在服务器手册中找到安装- libmongocrypt的Linux说明。 如果使用包管理器安装- libmongocrypt, Java Native Access (JNA) 将在那里找到它,而无需进一步配置。 或者,您可以通过将- LD_LIBRARY_PATH环境变量设置为- libmongocrypt包的文件路径来指定搜索路径。- 我们建议直接安装,因为 OpenSSL 二进制文件可能不兼容,因此捆绑的共享库不会与 OpenSSL 链接。 - 共享库加载由 JNA 处理。您可以在NativeLibrary 类文档中查看库加载搜索路径顺序的规则。 
 
- 修复了导致 - InsertOneResult.getInsertedId()和- InsertManyResult.getInsertedIds()方法在某些情况下返回不正确文档ID 的问题。 此更改将向后移植到Java驾驶员v 5.1.4和 v 4.11.4 。
- 当分片集群操作不成功时,如果有其他 - mongos服务器可用,则驾驶员会避免选择同一- mongos服务器进行操作重试。
- 添加应用程序使用 GraalVM 原生映像时所需的可访问性元元数据。此元数据取代了在使用驾驶员程序库时收集可达性元数据的需要。要学习;了解更多信息,请参阅 GraalVM 文档中的可达性元数据。 - 此更改不会添加 - libjnidispatch和- libmongocrypt资源条目,因为为所有支持的平台(目标)添加条目会显着影响使用 GraalVM 原生映像构建的原生可执行文件的大小。查看驾驶员Github存储库中的示例资源配置.json文件,了解在应用程序依赖于- org.mongodb:mongodb-crypt库的情况下如何显式指定这些条目。
- 通过扩展 - VectorSearchOptionsAPI引入以下特定选项子类型,从而启用精确向量搜索:- ExactVectorSearchOptions:使用此选项类型可启用精确匹配,确保结果是与给定查询向量最接近的向量。
- ApproximateVectorSearchOptions:使用此选项类型可以启用可能不会返回精确的最近向量的搜索。 实例化此类型时,您可以传递- numCandidates参数,以指定要考虑的最近邻数量。
 - 要学习;了解有关使用MongoDB Vector Search功能的更多信息,请参阅 Aggregates Builders指南中的MongoDB Vector Search。 
5.1.3 中的新功能
5.1.3 驾驶员补丁发布包括以下更改:
- 修复了使用 - Cursor类型时可能导致断言错误的问题。
5.1.2 中的新功能
5.1.2 驾驶员补丁发布包括以下更改:
- 修复了在您将扩展泛型基类的基类指定为 - MongoCollection实例的泛型类型时,驾驶员无法对扩展泛型基类的具体类进行编码和解码的问题。
- 修复了使用 SOCKS 5代理功能时如何验证域名的相关问题,从而允许在顶级域中使用六个字符以上的域名。 
5.1.1 中的新功能
5.1.1 驾驶员补丁发布包括以下更改:
- 使用 - MONGODB-OIDC身份验证机制时,不得在- authMechanismProperties连接string值中包含逗号字符。 要学习;了解有关此行为的更多信息,请参阅 Enterprise Authentication指南的MONGODB-OIDC部分。
- 通过删除冗余字节大量克隆来优化GridFS吞吐量。 - GridFSDownloadStream和- GridFSUploadStream类型使用- BsonDocument类型而不是- Document。
5.1 中的新增功能
警告
此版本中的弃用内容
为避免驱动程序的未来主要版本发生破坏性变更 (breaking change),请替换任何依赖于已弃用程序元素的应用程序代码。
本部分包括以下信息:
5.1 中的弃用
- 对MongoDB Server v 3.6的支持已弃用,并将在下一驾驶员发布中删除。 要学习;了解如何升级MongoDB Server部署,请参阅MongoDB Server手册中的发布说明。 
5.1 中的改进
- GraalVM 原生映像技术的内部测试。这些测试涉及使用 GraalVM 原生映像工具构建原生应用程序。 
- 增强了对 MONGODB-OIDC 身份验证机制的支持。有关 OIDC 的更多信息,请参阅企业身份验证机制指南的 MONGODB-OIDC 部分。 
5.1 中的新功能
- 引入 - serverMonitoringMode连接 URI 选项。 有关此选项的更多信息,请参阅《连接选项指南》。
5.0 中的新增功能
警告
此版本中的破坏性变更 (breaking change)
此驱动程序版本引入了破坏性变更 (breaking change)。有关这些更改的列表,请参阅升级指南中的版本 5.0 破坏性变更 (breaking change)。
警告
此版本中的弃用内容
为避免驱动程序的未来主要版本发生破坏性变更 (breaking change),请替换任何依赖于已弃用程序元素的应用程序代码。
本部分包括以下信息:
5.0 中的弃用内容
- org.mongodb.scala.Observable.completeWithUnit()方法已弃用。此方法不再可用,因为驱动程序现在公开的是- org.mongodb.scala.Observable[Unit],而不是- org.mongodb.scala.Observable[Void]。这与本版本中有关 Observables 的破坏性变更有关。
5.0 中的行为变更
- com.mongodb.event.ConnectionReadyEvent上的- getElapsedTime()方法包括交付- ConnectionCreatedEvent所需的时间。 也就是说,返回的时间包括- com.mongodb.event.ConnectionPoolListener.connectionCreated()方法的持续时间。- com.mongodb.event.ConnectionCheckedOutFailedEvent和- com.mongodb.event.ConnectionCheckedOutEvent上的- getElapsedTime()方法包括传送- com.mongodb.event.ConnectionCheckOutStartedEvent所需的时间。 也就是说,返回的时间包括- com.mongodb.eventConnectionPoolListener.connectionCheckOutStarted()方法的持续时间。
5.0 中的新功能
5.0 驱动程序版本引入了以下功能:
- 添加对 - listCollections命令的- authorizedCollection选项的支持。 这是通过更改- com.mongodb.client.MongoDatabase.listCollectionNames()方法来实现的。 返回类型现在为- com.mongodb.client.ListCollectionNamesIterable,而以前是- MongoIterable<String>。 此更改允许使用- ListCollectionNamesIterable.authorizedCollections()方法并指定- authorizedCollections选项来配置返回值。 对以下类和接口进行了等效更改:- com.mongodb.reactivestreams.client.MongoDatabase
- org.mongodb.scala.MongoDatabase
- com.mongodb.kotlin.client.MongoDatabase
- com.mongodb.kotlin.client.coroutine.MongoDatabase
 - 这些更改对 listCollectionsNames() 方法引入了二进制重大更改。 有关 - MongoDatabase.listCollectionNames()方法和- authorizedCollections选项的更多信息,请参阅listCollections MongoDB Server手册页或获取集合列表。
注意
v 5.0.2 补丁发布修复了与使用 SOCKS 5代理功能时如何验证域名相关的问题,允许您在顶级域中使用六个字符以上的域名。
4.11 中的新增功能
本部分包括以下信息:
4.11 中的弃用
警告
此版本中的弃用内容
为避免驱动程序未来的主要版本出现破坏性更改,请替换任何依赖于弃用方法和类型的应用程序代码。
4.11 版驱动程序已弃用以下内容:
- DBCollection类的- getStats()和- isCapped()实例方法已被弃用。相应的服务器命令在 MongoDB v6.2 及更高版本中已弃用。请改用- $collStats聚合管道阶段来检索这些方法提供的信息。您可以按照以下代码示例所示运行聚合:- Cursor cursor = collection.aggregate(Arrays.asList( - new BasicDBObject("$collStats", - new BasicDBObject("storageStats", new BasicDBObject()))), - AggregationOptions.builder().build() - ); - 要确定集合是否为上限集合,请访问前面示例聚合中的 - Cursor实例返回的- storageStats.capped字段的值。- 如需了解有关 - $collStats聚合操作符的更多信息,请参阅“$collStats(聚合)服务器”手册条目。
- 以下与网络地址相关的方法已弃用,并将在 v5.0 中删除: - ServerAddress 方法 - getSocketAddress()和- getSocketAddresses()。- 使用 - java.net.InetAddress的- getByName()实例方法,而不是- getSocketAddress()。- 使用 - java.net.InetAddress的- getAllByName()实例方法,而不是- getSocketAddresses()。
- UnixServerAddress 方法 - getUnixSocketAddress()。- 构建 - jnr.unixsocket.UnixSocketAddress实例,而不是- getUnixSocketAddress()。将 UNIX 套接字文件的完整路径传递给构造函数。默认情况下,MongoDB 会创建位于- "/tmp/mongodb-27017.sock"的 UNIX 套接字文件。要了解有关- UnixSocketAddress的详情,请参阅 UnixSocketAddress API 文档。
 
- 以下与StreamFactory接口相关的方法和类型已弃用,并计划在 v5.0 中删除: - streamFactoryFactory()方法来自- MongoClientSettings.Builder
- getStreamFactoryFactory()方法来自- MongoClientSettings
- NettyStreamFactoryFactoryclass
- NettyStreamFactoryclass
- AsynchronousSocketChannelStreamFactoryclass
- AsynchronousSocketChannelStreamFactoryFactoryclass
- BufferProviderclass
- SocketStreamFactoryclass
- Streamclass
- StreamFactoryclass
- StreamFactoryFactoryclass
- TlsChannelStreamFactoryFactoryclass
 - 如果使用 - MongoClientSettings.Builder.streamFactoryFactory()来配置 Netty,则代码可能如下所示:- import com.mongodb.connection.netty.NettyStreamFactoryFactory; - // ... - MongoClientSettings settings = MongoClientSettings.builder() - .streamFactoryFactory(NettyStreamFactoryFactory.builder().build()) - .build(); - 将此代码替换为 TransportSettings.nettyBuilder(),如下例所示: - import com.mongodb.connection.TransportSettings; - // ... - MongoClientSettings settings = MongoClientSettings.builder() - .transportSettings(TransportSettings.nettyBuilder().build()) - .build(); 
4.11 中的新增功能
4.11 版驱动程序的新增功能包括:
- 支持使用 SOCKS5 代理连接到 MongoDB。要了解详情,请参阅使用 SOCKS5 代理连接到 MongoDB。 
注意
v 4.11.3 补丁发布修复了与使用 SOCKS 5代理功能时如何验证域名相关的问题,允许您在顶级域中使用六个字符以上的域名。
- 向 - ChangeStreamDocument类添加- getSplitEvent()方法,从而识别超过 16 MB 的变更流事件的片段。您必须在变更流中使用聚合阶段- $changeStreamSplitLargeEvent来处理超过 16 MB 的事件。要了解详情,请参阅分割大型变更流事件。
- $vectorSearch为 添加了聚合阶段构建器。要学习;了解更多信息,请参阅MongoDB Vector Search。
- 添加了MongoDB Search索引管理助手。要学习;了解更多信息,请参阅MongoDB搜索索引。 
- 更新了 Snappy 和 Zstd 压缩库依赖项版本。要了解有关当前依赖项版本的更多信息,请参阅网络压缩。 
- 为以下类添加 - getElapsedTime()方法,以监控连接池事件的持续时间:
- 支持 Java 21 虚拟线程和结构化并发。驱动程序内部结构已更新,以避免不必要地虚拟线程绑定,并保留线程中断状态,后者对于用于取消的结构化并发很重要。 - 要了解有关虚拟线程的详细信息,请参阅虚拟线程 JDK 增强提案。要了解有关结构化并发的详细信息,请参阅结构化并发 JDK 增强提案。 
- 已更新以下类型的 API 文档: 
4.10 中的新增功能
4.10 版驱动程序的新增功能包括:
- 实现统计聚合的 - Accumulators.percentile()和- Accumulators.median()方法。
- com.mongodb.client.model.search包中的接口现在标记为- @Sealed,而不是- @Evolving。密封接口不得由库的用户扩展或实现。
- 解决了驱动程序为重试操作发出重复日志消息的问题。驱动程序现在为每个重试操作正确发出一条日志消息。 
- org.bson.codecs.Parameterizable接口已弃用。如果解码器适用于参数化类型,请重写编解码器的- CodecProvider上的- CodecProvider.get()方法,而不是在自定义- Codec类型上实现此接口。
- 支持自定义 DNS 解析程序。 
- 支持可查询加密 (QE)。要详细了解使用 QE 功能的要求,请参阅可查询加密驱动程序兼容性表。