新增功能
在此页面上
了解以下版本中的新功能:
即将发生的破坏性变更 (breaking change)
MapReduceIterable 和 MongoCollection 上的 map-reduce 方法 在 MongoDB v4 2中已弃用。 及更高版本。它们将被聚合框架取代,并在未来版本中删除。
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 的错误。对使用 Google Cloud Key Management Service 或 Azure Key Vault 上托管的客户主密钥进行加密的数据加密密钥 (DEK) 进行轮换时,该错误可能会导致数据损坏。该错误存在于此驱动程序的 4.7.0 版本的 RewrapManyDataKey
方法中,且会导致 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 中的新增功能
此版本未添加任何新功能。