新增功能
在此页面上
了解以下版本中的新功能:
即将发生的破坏性变更 (breaking change)
MapReduceIterable 和 MongoCollection 上的 map-reduce方法 在MongoDB v 中已弃用。42和更高版本。 它们将被聚合框架取代,并在未来的发布中删除。
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 中的新增功能
此版本未添加任何新功能。