Docs 菜单
Docs 主页
/ / /
Java (Sync) 驱动程序
/

版本说明

了解以下版本中的新功能:

警告

此版本中的破坏性变更 (breaking change)

此驾驶员版本引入了重大更改。 有关这些更改的列表,请参阅升级指南中的版本5.0重大更改部分

警告

此版本中的弃用内容

为避免驱动程序的未来主要版本发生破坏性变更 (breaking change),请替换任何依赖于已弃用程序元素的应用程序代码。

本部分包括以下信息:

  • org.mongodb.scala.Observable.completeWithUnit()方法已弃用。 此方法不再有用,因为驱动程序现在公开org.mongodb.scala.Observable[Unit]而不是org.mongodb.scala.Observable[Void] 。 这与此版本中可观察到的一项破坏性变更 (breaking change)有关。

  • com.mongodb.event.ConnectionReadyEvent上的getElapsedTime()方法包括交付ConnectionCreatedEvent所需的时间。 也就是说,返回的时间包括com.mongodb.event.ConnectionPoolListener.connectionCreated()方法的持续时间。

    com.mongodb.event.ConnectionCheckedOutFailedEventcom.mongodb.event.ConnectionCheckedOutEvent上的getElapsedTime()方法包括传送com.mongodb.event.ConnectionCheckOutStartedEvent所需的时间。 也就是说,返回的时间包括com.mongodb.eventConnectionPoolListener.connectionCheckOutStarted()方法的持续时间。

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手册页或获取集合列表。

本部分包括以下信息:

警告

此版本中的弃用内容

为避免驱动程序未来的主要版本出现破坏性更改,请替换任何依赖于弃用方法和类型的应用程序代码。

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 中删除:

  • 以下与StreamFactory接口相关的方法和类型已弃用,并计划在 v5.0 中删除:

    • streamFactoryFactory() 方法来自 MongoClientSettings.Builder

    • getStreamFactoryFactory() 方法来自 MongoClientSettings

    • NettyStreamFactoryFactory class

    • NettyStreamFactory class

    • AsynchronousSocketChannelStreamFactory class

    • AsynchronousSocketChannelStreamFactoryFactory class

    • BufferProvider class

    • SocketStreamFactory class

    • Stream class

    • StreamFactory class

    • StreamFactoryFactory class

    • TlsChannelStreamFactoryFactory class

    如果使用 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 版驱动程序的新增功能包括:

  • 支持使用 SOCKS5 代理连接到 MongoDB。要了解详情,请参阅使用 SOCKS5 代理连接到 MongoDB

  • 修复了使用代理功能时如何验证域名的相关问题,允许您在顶级域中使用六个字符以上的域名。

  • ChangeStreamDocument 类添加 getSplitEvent() 方法,从而识别超过 16 MB 的变更流事件的片段。您必须在变更流中使用聚合阶段 $changeStreamSplitLargeEvent 来处理超过 16 MB 的事件。要了解详情,请参阅分割大型变更流事件

  • 已为 $vectorSearch 添加了聚合阶段构建器。要了解详细信息,请参阅 Atlas Vector Search。

  • 添加了 Atlas Search 索引管理助手。如需了解更多信息,请参阅“Atlas Search 索引”。

  • 更新了 Snappy 和 Zstd 压缩库依赖项版本。要了解有关当前依赖项版本的更多信息,请参阅网络压缩

  • 为以下类添加 getElapsedTime() 方法,以监控连接池事件的持续时间:

  • 支持 Java 21 虚拟线程和结构化并发。驱动程序内部结构已更新,以避免不必要地虚拟线程绑定,并保留线程中断状态,后者对于用于取消的结构化并发很重要。

    要了解有关虚拟线程的详细信息,请参阅虚拟线程 JDK 增强提案。要了解有关结构化并发的详细信息,请参阅结构化并发 JDK 增强提案。

  • 已更新以下类型的 API 文档:

4.10 版驱动程序的新增功能包括:

  • 实现统计聚合的 Accumulators.percentile()Accumulators.median() 方法。

  • com.mongodb.client.model.search 包中的接口现在标记为 @Sealed,而不是 @Evolving。密封接口不得由库的用户扩展或实现。

  • 解决了驱动程序为重试操作发出重复日志消息的问题。驱动程序现在为每个重试操作正确发出一条日志消息。

  • org.bson.codecs.Parameterizable 接口已弃用。如果解码器适用于参数化类型,请重写编解码器的 CodecProvider 上的 CodecProvider.get() 方法,而不是在自定义 Codec 类型上实现此接口。

  • 支持自定义 DNS 解析程序。

  • 支持可查询加密 (QE)。要详细了解使用 QE 功能的要求,请参阅可查询加密驱动程序兼容性表

重要

聚合表达式操作处于 Beta 阶段

此驱动程序版本引入了用于创建聚合表达式的 API。此功能处于 beta 阶段。

4.9 版驱动程序的新增功能包括:

  • 新增一个新的异常来识别以下情况:BsonCreator 所注解的构造函数包含的参数附带除 BsonPropertyBsonId 之外的注释。

  • 更改了 org.mongodb.driver.protocol.command 程序包报告的命令监控信息的日志信息格式。

  • 聚合”辅助工具类型中添加了对 $documents 聚合管道阶段的支持。

  • 增加了 MongoClientSettings.Builder.applyToLoggerSettings()LoggerSettings.Builder.maxDocumentLength() 方法,允许您在日志消息中指定 BSON 文档的扩展 JSON 表示形式的最大长度。

警告

v4.8 的重大更改

v4.8驾驶员包含重大更改。有关更多信息,请参阅版本 4.8 重大更改驱动程序版本 4.8 服务器版本支持更改

重要

弃用通知

MapCodecIterableCodec类已弃用。 MapCodec使用MapCodecProvider ,而不是 。对于不是IterableCodec Collection类型的Iterable类型,请使用CollectionCodecProviderIterableCodecProvider ,而不是 。

4.8 驱动程序版本的行为更改包括:

  • 如果您的应用程序在 OSGi 容器中部署驱动程序并依赖该驱动程序来编码和解码 Java 记录,则要求您添加对 org.bson.codecs.record 模块的显式依赖项。

  • DEBUG 级而不是 INFO 级记录新连接信息。

4.8 驱动程序版本的新功能包括:

  • 支持使用 AWS 进行身份验证。该驱动程序对 AWS SDK 版本 1 和版本 2 具有可选依赖项。

  • 支持从环境中获取 GCP 和 Azure 的档案,以用于正在使用的加密。

  • 支持对包含具有通用参数的组件的记录进行反序列化。

  • 支持对包含更具体容器类型(例如 SortedSetNavigableMapLinkedListTreeSet)的组件的记录进行反序列化。

  • 支持递归记录类型,即其类型定义包含周期的记录。

  • 在MongoDB v6.1 及更高版本上启用 showExpandedEvents服务器功能时,在变更流更新事件中包含 disambiguatedPaths字段。有关此字段的了解详情getDisambiguatedPaths() API文档。有关showExpandedEvents 设置的了解详情扩展事件服务器文档。

4.7.1驾驶员修复了影响客户端字段级加密和Queryable Encryption的错误。在轮换使用GCP KMS或Azure Key Vault上托管的客户主密钥加密的数据加密密钥 (DEK) 时,该错误可能会导致数据损坏。 该错误存在于 RewrapManyDataKey 方法中驾驶员4.7.0 版本中,会导致您的 DEK 丢失。

重要

备份密钥保管库集合

轮换 DEK 之前,请务必备份密钥保管库集合。如果丢失了 DEK,则无法访问使用这些密钥加密的所有数据。

警告

v4.7 的重大更改

v4.7 驱动程序包含重大更改。有关详情,请参阅版本 4.7 重大更改

4.7 版驱动程序的新增功能包括:

  • 已添加对 MongoDB 6.0 的全面支持。

  • 添加了以下变更流支持改进:

    • 增强对变更流的前映像和后映像支持。变更流监视助手现在接受 whenAvailablerequired 作为 fullDocument 选项。有关更多信息,请参阅变更流参考文档。

    • 新增 fullDocumentBeforeChange 选项,可接受 whenAvailablerequired

    • 更改事件在配置为显示在 MongoDB 集合上时,现在包含 fullDocumentBeforeChange 字段。

    • 已添加对变更流的 showExpandedEvents 支持。

    • ChangeStreamDocument 类增加了 wallTime 支持。

  • 已添加集群索引创建支持。

  • 支持与Queryable Encryption相关的新功能,包括支持自动加密(MongoDB v 6.0 Enterprise 或更高版本)和手动加密。

    • 支持新的Queryable Encryption共享库,从而不再需要 mongocryptd进程。Queryable Encryption共享库需要 org.mongodb:mongodb-crypt 1.5.1.1 或更高版本。

  • 为加密密钥管理添加了新的 API。

  • 为更多聚合阶段新增了构建器 API 方法,其中包括 $search/$searchMeta(仅限 Atlas)、$densify$fill。您可以通过聚合构建器页面了解这些方法的更多信息。

  • 添加了可用于 POJO 编码和解码的BsonExtraElements注解。 BsonExtraElements可对将来可能接收新字段的对象进行解码,而无需开发者显式映射这些新字段。

  • 性能优化包括:

    • 服务器会话池和缓冲池的无锁实现。

    • 新的 DBCursor 清理实现,使用 Java 的 Cleaner API 而不是 finalization,在 Java 9 或更高版本中可用。

  • setWindowFields 生成器 API 不再是测试版功能。更改 API 会破坏二进制和源代码的兼容性。有关详情,请参阅版本 4.7 重大更改

4.6 版 Java 驱动程序的新增功能包括:

如果 DNS 服务器返回 NXDomain 错误,则表示不存在某个域,因而 4.5.1 驱动程序不再引发异常。

4.5 版 Java 驱动程序的新增功能包括:

  • 已添加对指定 SRV 资源记录自定义服务名称的支持。如需了解更多信息,请参阅“连接选项”指南中的 srvServiceName 设置。

  • 增加了对使用 CodecRegistries.withUuidRepresentation() 方法在编解码器注册表中自定义 UUID 表示形式的支持。

  • 已添加在 ClusterSettingsServerSettingsConnectionPoolSettings 生成器中覆盖监听器设置的支持。

  • 现在,当不同 MongoClient 实例不共享监听器时,ClusterListenerServerListenerServerMonitorListener 收到的所有事件都会使用 happens-before 关系完全排序。如需了解有关 happens-before 排序的更多信息,请参阅“Java 语言规范”中的“Happens-before 排序”。

  • 已添加 EnumCodecEnumCodecProvider 类,将 enum 类型的编解码器支持从 PojoCodec 类中分离出来。您可以从 MongoClientSettingsBson 接口访问的默认编解码器注册表现在包含 enum 编解码器类。如果应用程序使用自定义枚举编解码器和默认注册表之一,请务必按照覆盖编解码器部分中的说明对它们进行排序。

  • 解决了影响 4.4 和 4.3 版驱动程序的性能问题。该版本的性能与 4.2 版类似。

  • 已解决因检索集群描述而产生的错误未传递至 onError 订阅者回调的问题

  • 解决了启用压缩后连接时释放 ByteBuf 实例的问题。

  • org.mongodb.driver-core OSGi 包中删除了对 javax.annotation.* 包的不必要依赖。

4.4 版 Java 驱动程序的新增功能包括:

  • 与 MongoDB 5.1 兼容并支持 Java 17

  • 已在下列位置添加对索引提示的支持: AggregateIterable

  • 增加了对从节点上 $merge$out 聚合阶段的支持

  • Updates 构建器中使用 mergeObjects() 方法

  • DocumentCodec 在写入 IterableMap 实例时不会忽略 CodecRegistry

4.3 版 Java 驱动程序的新增功能包括:

  • 已添加对 MongoDB 稳定版 API 的支持。如需了解更多信息,请参阅我们的“稳定版 API”指南。

    注意

    从 2022 年 2 月开始,版本化 API 被称为 Stable API。此次命名更改后,所有概念和功能均保持不变。

  • 添加了对连接到MongoDB Atlas无服务器实例的支持。 有关设置的更多信息,请参阅有关如何创建新的无服务器实例的文档

  • setWindowFields 管道阶段添加了生成器 API,允许使用窗口操作符

  • 添加了对设置 Netty io.netty.handler.ssl.SslContext 的支持

  • 添加了支持快照读取 ClientSession

  • 限制每个连接池建立新连接的速度

  • 删除了对插入或替换文档字段名中允许字符的大部分限制。对于任何依赖项客户端执行这些限制的应用程序来说,这都是一种行为更改。

下表显示了文档字段名称中允许使用的字符的限制状态:

字符
操作
说明

.

插入和替换

删除了对包含此字符的字段名称的限制。

$

Insert

删除了对以此字符开头的字段名称的限制。

$

替换

已删除嵌套文档中对包含此字符的字段名称的限制。

$

替换

保持顶层文档中对以此字符开头的字段名称的限制。这样可以防止在打算使用更新操作时意外使用替换操作。

注意

使用美元前缀或虚线键进行的未确认写入可能会被 5.0 之前的版本静默拒绝 服务器,对字段名称的某些限制仍然在服务器中执行。

警告

v4.2 的重大更改

v4.2 驱动程序包含重大更改。有关详情,请参见版本 4.2 重大更改

4.2 版 Java 驱动程序的新增功能包括:

  • 向客户端字段级加密添加 Azure 与 GCP 密钥存储库

  • 添加了 Kerberos 缓存票证,以便在多个身份验证请求中重复使用

  • 添加了使用 MongoClientSettingsConnectionString 作为配置的 MongoClients 实例

  • 查找聚合命令中使用 explain() 方法

  • 添加了 JsonObject 类,通过避免中间的 Map 表示,使 JSON 的编码和解码更加高效

  • 添加了BsonRepresentation注解,允许您在POJO类中将ObjectId BSON值表示为String

  • 增加了 Filters.empty() 方法

4.1 版 Java 驱动程序的新增功能包括:

  • 在计划维护事件期间,客户感知到的故障转移时间显著减少

  • 更新()删除() 方法现在支持索引提示

  • find() 方法支持 allowDiskUse(),用于需要过多内存才能在 RAM 中执行的排序。

  • 增加了对使用 Amazon Web Services (AWS) 身份和访问管理 (IAM) 凭证的 MONGODB-AWS 身份验证机制的支持

  • 身份验证需要减少往返服务器的次数,从而加快连接设置

警告

v4.0 中的重大变化

v4.0 驱动程序包含重大更改。有关详情,请参见版本 4.0 重大更改

此版本未添加任何新功能。

后退

参考

在此页面上