了解以下版本中的新功能:
5.11.1 中的新功能
重要
Kotlin驾驶员5.11.1 包含对以下 CVE 的修复:
For the latest information about MongoDB security updates, see MongoDB Security Bulletins.
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..5 发布说明。111
5.11 中的新功能
5.11驾驶员发布不包含应用于Kotlin驾驶员的任何更改、修复或功能。
要学习;了解有关此发布的更多信息,请参阅 GitHub 5上的 v.11 发布说明。
5.10 中的新功能
5.10驱动程序发布包括以下更改、修复和功能:
- 修复了以下问题: Kotlin数据类中的
ByteArray字段被编码为Int32值的BSON大量而不是BSON二进制,这可能会显着增加文档大小。此发布恢复了BSON二进制编码,与 v5.1.3 之前的行为匹配。驾驶员仍会对以大量格式写入的数据进行解码,但此数据的任何非驱动程序使用者可能需要更新才能处理新的编码。
新增
$scoreFusion聚合阶段,可合并并规范化多个搜索管道的分数。此阶段需要MongoDB 8.2 或更高版本。为
$score聚合阶段添加了流式构建器API 。使用此API可配置分数规范化、权重和分数详细信息。此功能需要MongoDB 8.2 或更高版本。Adds the
parentFilterandnestedOptionsoptions, which allow nested embeddings and arrays of embeddings in$vectorSearchqueries.
To learn more about this release, see the v5.10 Release Notes on GitHub.
5.9.2 中的新功能
5.9.2驱动程序补丁发布包括以下更改:
- 修复了以下问题:
ProxySettings.toString()包含 SOCKS 代理用户名和密码,导致这些凭证出现在应用程序日志中。此问题会影响驾驶员版本54.11.0 到5.9.1 。要学习;了解详情,请参阅 JAVA-6266 和 CVE-2026 -18710 。
警告
在不升级的情况下抑制日志消息
如果您使用 SOCKS5 代理身份验证并且无法升级到 v5.9.2,请将 org.mongodb.driver.client 记录器设立为 WARN 或更高,以抑制客户端构造消息。我们不建议将此作为长期措施,因为它会隐藏对支持有价值的诊断信息,并且不会删除已写入现有日志的凭证。
To learn more about this release, see the v5.9.2 Release Notes on GitHub.
5.9 的新增功能
5.9驱动程序发布包括以下更改、修复和功能:
将 Queryable Encryption (QE) 前缀、后缀和子字符串查询提升为全面可用 (GA)。MongoDB 9.0 及更高版本支持这些查询类型。要了解有关 QE 的更多信息,请参阅正在使用的加密。
将 QE string 查询的显式加密 API 从
Text重命名为String。要执行 QE string 查询,请进行以下更改:使用
StringOptions类而不是TextOptions。使用
EncryptOptions.stringOptions()方法而不是textOptions()方法。使用
EncryptOptions.getStringOptions()方法而不是getTextOptions()方法。将加密算法设置为
"String"。
将
libmongocrypt版本升级到 1.20.0。
To learn more about this release, see the v5.9 Release Notes on GitHub.
5.8 的新增功能
5.8驱动程序发布包括以下更改、修复和功能:
为向量搜索索引定义添加类型化的构建者 API。
新增对
$rerank聚合阶段的支持。连接到运行 MongoDB 8.3 或更高版本的 Atlas 集群时,可以使用Aggregates.rerank()构建者方法创建此阶段。新增对
$search管道阶段中vectorSearch操作符的支持。您可以使用SearchOperator.vectorSearch()构建者方法执行近似最近邻 (ANN) 向量搜索,或使用SearchOperator.vectorSearchExact()执行精确最近邻 (ENN) 搜索。返回的VectorSearchOperator支持filter()方法应用词汇预过滤器。通过在
VectorSearchIndexDefinition类中使用storedSource()方法,增加了对在向量搜索索引定义上配置存储源的支持。通过在
VectorSearchOptions类中使用returnStoredSource()方法,增加了对在$vectorSearch结果中请求存储源字段的支持。通过消除中间分配来优化
RawBsonDocument编码和解码性能。修复当 Micrometer 不存在时发生的 OSGi 包解析失败。
将 Javadoc 文档添加到
MongodbObservation和MongodbObservationContext类。将
libmongocrypt版本升级到 1.18.1。
To learn more about this release, see the v5.8 Release Notes on GitHub.
5.7.1 中的新功能
5.7.1驱动程序补丁发布包括以下更改:
修复 Micrometer 集成中的 Javadoc 警告。
将 Micrometer OSGi 导入标记为可选,以解决 OSGi 运行时环境中的绑定包解析问题。
To learn more about this release, see the v5.7.1 Release Notes on GitHub.
5.7 中的新增功能
5.7驱动程序发布包括以下更改、修复和功能:
重要提示:即将发布的次要发布将不再支持MongoDB Server版本4.2 ,并将支持的最低版本提高到4.4 。此更改与MongoDB软件生命周期时间表一致。
We recommend making changes to your application to accommodate breaking changes. To learn more about upgrading your server version, see the Release Notes section in the MongoDB Server manual.
添加了Scala 3支持。
添加自动嵌入支持,作为向量搜索API 的一部分。
为响应式流驱动程序添加了 Micrometer/OpenTelemetry 跟踪支持,并包含一般性的 Micrometer支持改进。
添加带有蹦床模式的堆栈安全异步循环支持,以防止 Stack Overflow 错误。
改进客户端超时处理,以更好地考虑往返时间 (RTT) 变化,以及各种与超时相关的小改进。
重复使用
ConnectionSource以避免额外的服务器选择。恢复
RawBsonDocument编码的优化编解码器路径,修复性能回归问题。释放
AsyncCommandCursor中空的getMore响应之间的连接,防止空闲变更流到达maxPoolSize时耗尽连接池。加密客户端现在使用
writeConcern多数。处理来自KMS的意外流结束错误。
修复了
JsonPrimitive数字的JsonBsonEncoder解析,其中科学格式的数字被解析为普通 Int 或 Long。简化
ServerMonitor线程名称并删除=字符,某些监控系统无法进程该字符。修复了可选的Kotlin BSON解码问题。
将
libmongocrypt升级到 1.17.3。使用
ZstdInputStreamNoFinalizer进行 Zstandard 解压缩。将 Netty 更新到最新版本。
更新 Snappy 以获取最新的安全修复程序。
将 JUnit 5 更新到最新版本。
从集群中删除服务器时,将日志级别调整为警告。
5.6 中的新增功能
5.6驱动程序发布包括以下更改、修复和功能:
添加对Queryable Encryption前缀、后缀和子字符串查询的实验性支持。要学习;了解有关 QE 的更多信息,请参阅正在使用的加密。
注意
实验功能
Queryable Encryption的前缀、后缀和子字符串查询不稳定,在普遍可用 (GA) 之前无法保证其安全性。仅在实验性工作负载中使用它们。
将
nsType字段添加到ChangeStreamDocument对象。该字段包含变更事件的命名空间类型(COLLECTION、TIMESERIES或VIEW)。为 OIDC身份验证添加实验性客户端操作超时 (CSOT)支持。
注意
实验功能
CSOT功能是实验性的,可能在未来的驱动程序发布中发生变化。
当为 CSOT 设立
timeoutMS时,驱动程序将忽略maxWaitTime连接设置的值。将
appendMetadata()方法添加到MongoClient类。您可以使用此方法将元数据附加到现有客户端的元数据中。最大元数据大小为 512 MB。向
RewrapManyDataKeyOptions类添加一个公共构造函数。将
AsyncReadOperation和AsyncWriteOperation接口合并为ReadOperation和WriteOperation接口。您可以使用Operations类中的构建器方法创建读取和写入操作。弃用了
MongoNamespace.COMMAND_COLLECTION_NAME常量。修复了导致 OIDC 在会话中重新进行身份验证的错误。
序列化用
@BsonDiscriminator注解的 POJO 时,如果属性的readName与鉴别器键匹配,则驱动程序仅将该字段序列化一次。对
CommandCursorResult实例调用next()或tryNext()方法后,驱动程序会清除CommandCursorResult.results属性以释放内存。PojoBuilderHelper类创建属性模型,其中包括来自抽象类和接口的属性。当集群拓扑结构更改时,驱动程序会发布并记录以下事件:
ClusterOpeningEvent:拓扑结构打开时发布ClusterDescriptionChangedEvent:拓扑结构描述更改时发布ClusterClosedEvent:拓扑结构关闭时发布
当主节点副本集成员因以下原因之一而过时时,驱动程序会抛出
MongoStalePrimaryException:选举或发现新的主节点 (primary node in the replica set)成员。
主节点 (primary node in the replica set)节点中
electionId或setVersion字段的值与其他副本集中这些字段的值不匹配。
要学习;了解有关副本集的更多信息,请参阅MongoDB服务器手册中的复制。
5.5.1 中的新功能
5.5.1驱动程序补丁发布包括以下更改:
- 修复由会话中运行的操作(包括ACID 事务中运行的操作)触发时,OIDC 重新身份验证失败的问题。
5.5 中的新增功能
5.5驱动程序发布包括以下更改、修复和功能:
- 添加了在使用默认TLS 传输层时对
connectTimeoutMS选项的支持。
- 引入性能改进,这些改进反映在驱动程序性能基准测试中。要查看性能基准测试结果,请参阅以下性能改进部分。
性能改进
本节中的表格显示了同步Java驱动程序的性能测试结果。测试在具有以下配置的MongoDB Server 8.0部署上进行:
在
localhost上运行,网络延迟可以忽略不计。在延迟较高的环境中,性能改进可能不太明显。身份验证已禁用。
TLS 已禁用。
我们预计所有MongoDB Java驱动程序都会有类似的性能提升,因为它们股票改进的 driver-core API。
标准传输设置
下表显示了对配置有标准传输设置的驱动程序v5.5 进行性能测试的结果。每行都包含测试的功能、性能改进百分比和z 分数。
功能 | 改进百分比 | Z 分数 |
|---|---|---|
深度BSON解码 | 19.44% | 5.4 |
深度BSON编码 | 102% | 22.8 |
查找多个并清空游标 | 25.08% | 13.72 |
通过ID查找 | 2.7% | 3.16 |
平面BSON解码 | 31.2% | 9.38 |
平面BSON编码 | 199.5% | 12.34 |
完整BSON解码 | 16.5% | 7.23 |
完整BSON编码 | 147.3% | 10.39 |
JSON-LD 多文件导入 | 21.8% | 8.21 |
包含大型文档的客户端批量插入 | 91.3% | 24.44 |
包含大型文档的集合批量插入 | 96.5% | 8.79 |
批量插入大型文档 | 93.3% | 8.11 |
批量插入小文档 | 39.3% | 5.72 |
插入包含大型文档的文档 | 82.4% | 7.28 |
包含小文档的客户端批量插入 | 49.5% | 17.99 |
包含小文档的集合批量插入 | 47.8% | 6.44 |
Netty 传输设置
下表显示了使用 Netty 传输设置配置的驱动程序 v5.5 的性能测试结果。每行都包含测试的功能、性能改进百分比和z 分数。
功能 | 改进百分比 | Z 分数 |
|---|---|---|
查找多个并清空游标 | 40.3% | 14.81 |
通过ID查找 | 4.4% | 4.12 |
JSON-LD 多文件导入 | 16.9% | 3.77 |
包含大型文档的客户端批量插入 | 54.8% | 14.49 |
包含大型文档的集合批量插入 | 104.9% | 38.72 |
批量插入大型文档 | 74.6% | 65.55 |
插入包含大型文档的文档 | 66.6% | 58.65 |
包含小文档的客户端批量插入 | 36.1% | 15.41 |
包含小文档的集合批量插入 | 39.3% | 37.38 |
批量插入小文档 | 35.1% | 41.51 |
提示
要了解有关我们如何进行驱动程序性能基准测试的更多信息,请参阅性能基准测试规范。
5.4 的新增功能
5.4驱动程序发布包括以下更改、修复和功能:
支持 CSFLE 和 QE 的
$lookup操作。要学习;了解更多信息,请参阅服务器手册中的以下参考资料:$lookup and $graphLookup Behavior for CSFLE
引入物料清单 (BOM) 来管理您可能在应用程序中使用的MongoDB Java虚拟机(JVM)工件的版本。要查看有关将 BOM 添加到应用程序的说明,请参阅快速入门的“添加驱动程序程序物料清单”步骤。
将Amazon Web Services SDK 依赖项更新为 2.30.31 和 1.12.782,以测试
MONGODB-AWS身份验证机制。向
ClientUpdateOneOptions和ClientReplaceOneOptions类添加排序选项。此变更允许您为客户端批量写入中的更新和替换操作设置排序。要了解更多信息,请参阅批量操作指南的“更新操作”和“替换操作”部分。添加Kubernetes对 OIDC身份验证的支持。要学习;了解更多信息,请参阅《企业身份验证机制》指南中的 MONGODB-OIDC: Kubernetes 部分。
新增对以下MongoDB 搜索查询操作符的一类支持:
phraseregexqueryStringequalsmoreLikeThisinwildcard
要学习;了解更多信息,请参阅 聚合构建器指南的 搜索操作符方法 部分。
更新游标以在调用
close()时刷新timeoutMS设置,而不影响操作超时。使您能够在通过指定
hint选项调用distinct()方法时使用索引。
要查看此发布中更改的完整列表,请参阅 GitHub 上的 v.5 发布说明。4
5.3 中的新增功能
5.3驱动程序发布包括以下新功能、改进和修复:
添加
BinaryVector类以实现用于向量存储和检索的BSON二进制子类型 9。 与Double实例列表相比,此类可更有效地存储值。 您可以根据向量包含的元素类型创建以下向量类型:Int8BinaryVector:8 位有符号整数的向量Float32BinaryVector:浮点数向量PackedBitBinaryVector:二进制量化向量(处于beta,在正式发布之前可能会有更改)
要学习;了解有关此功能的更多信息,请参阅Atlas文档中的矢量量化。要学习;了解如何在使用MongoDB Vector Search功能时使用此类型,请参阅MongoDB Vector Search指南。
从连接池实施中删除显式公平性。 当您在许多应用程序线程中使用
MongoClient实例时,此更改可能会提高吞吐量。 但是,此更改可能会导致尾部延迟增加。
支持直接将构建者类方法与数据类属性结合使用。要了解更多信息,请参阅将构建者与数据类结合使用指南。此功能由本版本发布的 Kotlin 驱动程序扩展包提供支持。
5.2 中的新增功能
5.2驱动程序发布包括以下新功能、改进和修复:
允许设置客户端操作超时 (CSOT)。此功能允许您在
MongoClient实例上设立单个超时,该超时适用于使用该客户端执行的所有操作。要学习;了解更多信息,请参阅限制服务器执行时间指南。当且仅当启用了 CSOT功能时,驱动程序才会忽略以下超时选项:
waitQueueTimeoutMSsocketTimeoutMSwTimeoutMSmaxTimeMSmaxCommitTimeMS
重要
实验功能
CSOT 是一项实验性功能,尚未准备好投入生产。在当前发布中,此功能是可选的,现有的超时选项仍然有效。
添加
SearchIndexType类,您可以在构造SearchIndexModel实例时传递该类。此更改允许您在创建Atlas 搜索或向量搜索索引时指定索引类型。要学习更多信息,请参阅 索引指南中的MongoDB Search 和MongoDB Vector Search 索引。将实施
SCRAM-SHA-1和SCRAM-SHA-256身份验证机制的算法委托给已配置的 JCA提供商来实现。 此更改意味着您的应用程序可以使用已配置的 FIPS 兼容 JCA提供商来提供更高级别的安全性。修改 mongodb-crypt 依赖项版本控制以匹配Java虚拟机(JVM)驱动程序的版本控制。未来版本的
mongodb-crypt将与驾驶员一起发布,并股票相同的版本号。升级此发布的驾驶员时,必须将mongodb-crypt依赖项升级到 v..5 20。要学习;了解更多信息,请参阅《正在使用的加密》指南。由于在所有支持的平台上实施了原生加密,因此性能得到提升。 以下列表描述了根据您的操作系统实现此改进所需的操作:
Windows :将
mongodb-crypt版本升级到 v 5.2.0 。Mac :将
mongodb-crypt版本升级到 v 5.2.0 。Linux: Install
libmongocrypt.sodirectly on the file system, instead of using the file that is bundled within themongodb-cryptJAR file. You can find Linux instructions to installlibmongocryptin the Server manual. If you use a package manager to installlibmongocrypt, Java Native Access (JNA) will find it there without further configuration. Alternatively, you can specify the search path by setting theLD_LIBRARY_PATHenvironment variable to the file path of thelibmongocryptpackage.我们建议直接安装,因为 OpenSSL 二进制文件可能不兼容,因此捆绑的共享库不会与 OpenSSL 链接。
共享库加载由 JNA 处理。您可以在NativeLibrary 类文档中查看库加载搜索路径顺序的规则。
修复了导致
InsertOneResult.getInsertedId()和InsertManyResult.getInsertedIds()方法在某些情况下返回不正确文档ID 的问题。此更改将向后移植到Kotlin驱动程序v5.1.4 和 v4.11.4。当分片集群操作不成功时,如果有其他
mongos服务器可用,则驱动程序会避免选择同一mongos服务器进行操作重试。添加应用程序使用 GraalVM 原生映像时所需的可访问性元数据。此元数据取代了在使用驱动程序库时收集可达性元数据的需要。要学习;了解更多信息,请参阅 GraalVM 文档中的可达性元数据。
This change does not add the
libjnidispatchandlibmongocryptresource entries, because adding entries for all supported platforms (targets) significantly affects the size of native executables built using GraalVM Native Image. View this sample resource-config.json file in the driver GitHub repository to see how to specify these entries explicitly if your application depends on theorg.mongodb:mongodb-cryptlibrary.通过扩展
VectorSearchOptionsAPI引入以下特定选项子类型,从而启用精确向量搜索:ExactVectorSearchOptions:使用此选项类型可启用精确匹配,确保结果是与给定查询向量最接近的向量。ApproximateVectorSearchOptions:使用此选项类型可以启用可能不会返回精确的最近向量的搜索。 实例化此类型时,您可以传递numCandidates参数,以指定要考虑的最近邻数量。
要学习;了解有关使用MongoDB Vector Search功能的更多信息,请参阅 Aggregates Builders指南中的MongoDB Vector Search。
添加对来自
kotlinx-datetime库的序列化器的支持,该支持允许您将Kotlin日期和时间类型映射到BSON作为预期类型,而不是作为字符串。 要学习;了解更多信息,请参阅Kotlin序列化指南的序列化日期和时间部分。Supports serialization of JsonElement values. To work with the
JsonElementtype, you must add thekotlinx-serialization-jsonlibrary as a dependency in your application.
5.1.3 中的新功能
5.1.3驱动程序补丁发布包括以下更改:
- 修复了使用
Cursor类型时可能导致断言错误的问题。
5.1.2 中的新功能
5.1.2驱动程序补丁发布包括以下更改:
支持使用可为 null 的泛型参数类型编码Kotlin数据类。 示例,您可以在以下代码中对
Container类进行编码:data class Box<T>( val boxed: T ) data class Container( val box: Box<String?> )
5.1.1 中的新功能
5.1.1驱动程序补丁发布包括以下更改:
- 使用
MONGODB-OIDC身份验证机制时,不得在authMechanismProperties连接string值中包含逗号字符。 要学习;了解有关此行为的更多信息,请参阅 Enterprise Authentication指南的MONGODB-OIDC部分。
5.1 中的新增功能
警告
此版本中的弃用内容
为避免驱动程序的未来主要版本发生破坏性变更 (breaking change),请替换任何依赖于已弃用程序元素的应用程序代码。
本部分包括以下信息:
5.1 中的弃用
- 对 MongoDB 服务器 v 3.6的支持已弃用,并将在下一驱动程序版本中删除。 要了解如何升级 MongoDB Server 部署,请参阅 MongoDB Server 手册中的发布说明。
5.1 中的改进
GraalVM 原生映像技术的内部测试。这些测试涉及使用 GraalVM 原生映像工具构建原生应用程序。
增强了对
MONGODB-OIDC身份验证机制的支持。要学习;了解有关 OIDC 的更多信息,请参阅《企业身份验证机制》指南中的 OIDC(工作负载联合身份) 部分。修复了以下问题:在使用多态
MongoCollection实例时,操作使用了不正确的编解码器。 这可确保使用bson-kotlinx时鉴别器信息不会丢失。修复了以下问题:解码时类鉴别器是第一个字段,导致使用多态
MongoCollection实例时出现字段类型错误。
5.1 中的新功能
5.0 中的新增功能
5.0 驱动程序版本的新功能包括:
KotlinSerializerCodecProvider构造函数现在接受serializersModule和bsonConfiguration对象:KotlinSerializerCodec.create(clazz.kotlin, serializersModule=serializersModule, bsonConfiguration=bsonConfiguration) 这样可以更轻松地自定义配置。
修复了导致container类型擦除的 Kotlin 反射错误。
4.11 中的新增功能
本部分包括以下信息:
4.11 中的弃用
警告
此版本中的弃用内容
为避免驱动程序未来的主要版本出现破坏性更改,请替换任何依赖于弃用方法和类型的应用程序代码。
4.11 版驱动程序已弃用以下内容:
以下与网络地址相关的方法已弃用,并将在 v5.0 中删除:
The ServerAddress methods
getSocketAddress()andgetSocketAddresses().使用
java.net.InetAddress的getByName()实例方法,而不是getSocketAddress()。使用
java.net.InetAddress的getAllByName()实例方法,而不是getSocketAddresses()。The UnixServerAddress method
getUnixSocketAddress().构建
jnr.unixsocket.UnixSocketAddress实例,而不是getUnixSocketAddress()。将 UNIX 套接字文件的完整路径传递给构造函数。默认情况下,MongoDB 会创建位于"/tmp/mongodb-27017.sock"的 UNIX 套接字文件。要了解有关UnixSocketAddress的详情,请参阅 UnixSocketAddress API 文档。
以下与 StreamFactory 接口相关的方法和类型已弃用,并计划在5 v.0 中删除:
streamFactoryFactory()方法来自MongoClientSettings.BuildergetStreamFactoryFactory()方法来自MongoClientSettingsNettyStreamFactoryFactoryclassNettyStreamFactoryclassAsynchronousSocketChannelStreamFactoryclassAsynchronousSocketChannelStreamFactoryFactoryclassBufferProviderclassSocketStreamFactoryclassStreamclassStreamFactoryclassStreamFactoryFactoryclassTlsChannelStreamFactoryFactoryclass
如果使用
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。
向
ChangeStreamDocument类添加getSplitEvent()方法,从而识别超过 16 MB 的变更流事件的片段。您必须在变更流中使用聚合阶段$changeStreamSplitLargeEvent来处理超过 16 MB 的事件。已为
$vectorSearch添加了聚合阶段构建器。添加了MongoDB Search索引管理辅助工具。
更新了 Snappy 和zstd压缩库依赖项版本。 要学习;了解有关当前依赖项版本的更多信息,请参阅压缩网络流量。
为以下类添加
getElapsedTime()方法,以监控连接池事件的持续时间:已更新以下类型的 API 文档:
4.10 中的新增功能
重要
从 Kotlin 驱动程序 4.10.1 版开始,您必须将bson-kotlinx库添加为显式依赖项,才能使用kotlinx-serialization库。
支持 Kotlin 服务器端使用,包括协程和同步应用程序。
编解码器对 Kotlin 数据类的支持。
支持
kotlinx.serialization库