新增功能
在此页面上
了解以下版本中的新功能:
即将发生的破坏性变更 (breaking change)
MapReduceIterable 和 MongoCollection 上的 map-reduce方法 在MongoDB v 中已弃用。42和更高版本。 它们将被聚合框架取代,并在未来的发布中删除。
4.9 的新增功能
4.9 版驱动程序的新增功能包括:
添加了一个新的异常,用于识别何时由
BsonCreator
注解的构造函数包含带有BsonProperty
或BsonId
以外注解的参数。更改了
org.mongodb.driver.protocol.command
程序包报告的命令监控信息的日志信息格式。“聚合”助手类中添加了对
$documents
聚合管道阶段的支持。增加了 MongoClientSettings.Builder.applyToLoggerSettings() 和 LoggerSettings.Builder.maxDocumentLength() 方法,允许您在日志消息中指定 BSON 文档的扩展 JSON 表示形式的最大长度。
4.8 中的新增功能
重要
弃用通知
IterableCodec
和 MapCodec
类已被弃用。请改用 CollectionCodec
和 MapCodecV2
。二者支持任何实现 Collection
或 Map
的类。
4.8 驱动程序版本的行为更改包括:
如果您的应用程序在 OSGi 容器中部署驱动程序并依赖该驱动程序来编码和解码 Java 记录,则要求您添加对
org.bson.codecs.record
模块的显式依赖项。在
DEBUG
级而不是INFO
级记录新连接信息。
4.8 驱动程序版本的新功能包括:
支持使用 AWS 进行身份验证。该驱动程序对 AWS SDK 版本 1 和版本 2 具有可选依赖项。
支持从环境中获取 GCP 和 Azure 的档案,以用于正在使用的加密。
支持对包含具有通用参数的组件的记录进行反序列化。
支持对包含更具体容器类型(例如
SortedSet
、NavigableMap
、LinkedList
或TreeSet
)的组件的记录进行反序列化。支持递归记录类型,即其类型定义包含周期的记录。
在 MongoDB v 6.1及更高版本上启用
showExpandedEvents
服务器功能时,在变更流更新事件中包含disambiguatedPaths
字段。 通过 getDisambiguatedPaths() 了解有关此字段的更多信息 API 文档。有关showExpandedEvents
设置的更多信息,请参阅扩展事件服务器文档。
4.7.1 中的新增功能
4.7.1 驾驶员程序修复了影响客户端字段级加密和可Queryable Encryption的错误。 在轮换使用 GCPKMS或 上托管的 客户主密钥 加密的 数据加密密钥(DEK) 时,该错误可能会导致数据损坏。Azure Key Vault该错误存在于RewrapManyDataKey
方法中驾驶员4.7.0版本中,会导致 DEK 丢失。
4.7 中的新增功能
4.7 版驱动程序的新增功能包括:
已添加对 MongoDB 6.0 的全面支持。
添加了以下变更流支持改进:
已添加集群索引创建支持。
支持与Queryable Encryption相关的新功能,包括支持自动加密(MongoDB v 6.0 Enterprise 或更高版本)和手动加密。
支持新的Queryable Encryption共享库,从而不再需要
mongocryptd
进程。 Queryable Encryption共享库需要 org.mongodb:mongodb-crypt1.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 的新增功能
4.6 版 Java 驱动程序的新增功能包括:
缓冲池现在由所有
MongoClient
实例共享。缓冲池会清除闲置一分钟的缓冲区。增加了一个 API,用于为客户端字段级加密 (CSFLE) 的 AWS KMS 凭证指定提供程序。请参阅 AutoEncryptionSettings.Builder.kmsProviderPropertySuppliers() 和 ClientEncryptionSettings.Builder.kmsProviderPropertySuppliers() API 文档以了解更多信息。
为 CSFLE 的依赖项
org.mongodb:mongodb-crypt
添加了对基于 ARM 的 Apple M1 硬件的兼容性。添加了服务提供商接口 (SPI),允许驱动程序指定自定义 DNS 客户端。有关更多信息,请参阅 DnsClient 和 DnsClientProvider 接口 API 文档。
为 Java 记录和 BSON 文档之间的编码和解码添加了驱动程序支持,默认情况下已启用。如需了解更多信息,请参阅“文档数据格式:记录”。
4.5.1 中的新增功能
如果 DNS 服务器返回 NXDomain 错误,则表示不存在某个域,因而 4.5.1 驱动程序不再引发异常。
4.5 中的新增功能
4.5 版 Java 驱动程序的新增功能包括:
已添加对指定 SRV 资源记录自定义服务名称的支持。如需了解更多信息,请参阅“连接选项”指南中的
srvServiceName
设置。增加了对使用
CodecRegistries.withUuidRepresentation()
方法在编解码器注册表中自定义 UUID 表示形式的支持。已添加在
ClusterSettings
、ServerSettings
和ConnectionPoolSettings
生成器中覆盖监听器设置的支持。现在,当不同 MongoClient 实例不共享监听器时,
ClusterListener
、ServerListener
和ServerMonitorListener
收到的所有事件都会使用 happens-before 关系完全排序。如需了解有关 happens-before 排序的更多信息,请参阅“Java 语言规范”中的“Happens-before 排序”。添加了
EnumCodec
和EnumCodecProvider
类,以便将enum
类型的编解码器支持与PojoCodec
类分开。 可通过MongoClientSettings
和Bson
接口访问的默认编解码器注册表现在包含enum
编解码器类。 如果应用程序使用自定义枚举编解码器和默认注册表之一,请确保按照重写编解码器部分中的描述对它们进行排序。解决了影响4.4和4.3版驾驶员的性能问题。 此版本的性能应与4.2中的性能相似。
已解决因检索集群描述而产生的错误未传递至
onError
订阅者回调的问题解决了启用压缩后连接时释放
ByteBuf
实例的问题。从
org.mongodb.driver-core
OSGi 包中删除了对javax.annotation.*
包的不必要依赖。
4.4 中的新增功能
4.4 版 Java 驱动程序的新增功能包括:
与 MongoDB 5.1 兼容并支持 Java 17
已在下列位置添加对索引提示的支持:
AggregateIterable
增加了对从节点上
$merge
和$out
聚合阶段的支持在
Updates
构建器中使用mergeObjects()
方法DocumentCodec
在写入Iterable
或Map
实例时不会忽略 CodecRegistry
4.3 的新增功能
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 之前的版本静默拒绝。服务器,对字段名称的某些限制仍在服务器中执行。
4.2 的新增功能
4.2 版 Java 驱动程序的新增功能包括:
向客户端字段级加密添加 Azure 与 GCP 密钥存储库
添加了 Kerberos 缓存票证,以便在多个身份验证请求中重复使用
添加 了 MongoClients 以
MongoClientSettings
或ConnectionString
作为配置的实例添加了 JsonObject 类,通过避免中间的 Map 表示,使 JSON 的编码和解码更加高效
添加了 BsonRepresentation 注解,允许您将
ObjectId
BSON 值表示为String
POJO 中的 类增加了 Filters.empty() 方法
4.1 中的新增功能
4.1 版 Java 驱动程序的新增功能包括:
在计划维护事件期间,客户感知到的故障转移时间显著减少
find()
方法支持 allowDiskUse(),用于需要过多内存才能在 RAM 中执行的排序。增加了对使用 Amazon Web Services (AWS) 身份和访问管理 (IAM) 凭证的 MONGODB-AWS 身份验证机制的支持
身份验证需要减少往返服务器的次数,从而加快连接设置
4.0 中的新增功能
此版本未添加任何新功能。