了解以下版本中的新功能:
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驾驶员发布包括以下更改、修复和功能:
添加了对序列化期间
bson-kotlinx
蛇形大小写转换的BsonConfiguration
支持。要学习;了解更多信息,请参阅“序列化”页面上的实施蛇形命名策略部分。
支持 CSFLE 和 QE 的
$lookup
操作。要学习;了解更多信息,请参阅服务器手册中的以下参考资料:引入物料清单 (BOM) 来管理您可能在应用程序中使用的MongoDB Java虚拟机(JVM)工件的版本。要查看有关将 BOM 添加到应用程序的说明,请参阅快速入门的“添加驱动程序程序物料清单”步骤。
将Amazon Web Services SDK 依赖项更新为 2.30.31 和 1.12.782,以测试
MONGODB-AWS
身份验证机制。为
ClientUpdateOneOptions
和ClientReplaceOneOptions
类添加排序选项。此更改允许您为客户端端批量写入中的更新和替换操作设立排序顺序。要学习;了解更多信息,请参阅批量操作指南中的更新操作和替换操作部分。添加Kubernetes对 OIDC身份验证的支持。要学习;了解更多信息,请参阅《企业身份验证机制》指南中的 MONGODB-OIDC: Kubernetes 部分。
新增对以下Atlas Search查询符的一级支持:
phrase
regex
queryString
equals
moreLikeThis
in
wildcard
要学习;了解更多信息,请参阅 聚合构建器指南的 搜索操作符方法 部分。
更新游标以在调用
close()
时刷新timeoutMS
设置,而不影响操作超时。使您能够在通过指定
hint
选项调用distinct()
方法时使用索引。
要查看此发布中的完整更改列表,请参阅Github上的v5.4发布说明。
5.3 中的新增功能
5.3驾驶员发布包括以下新功能、改进和修复:
重要提示:下一个次要发布将不再支持MongoDB Server版本4.0 ,并将支持的最低版本提高到4.2 。我们建议对应用程序进行更改以适应重大更改。 请参阅服务器手册中的“发布说明”部分,学习;了解有关升级的更多信息。
添加
BinaryVector
类以实现用于向量存储和检索的BSON二进制子类型 9。 与Double
实例列表相比,此类可更有效地存储值。 您可以根据向量包含的元素类型创建以下向量类型:Int8BinaryVector
:8 位有符号整数的向量Float32BinaryVector
:浮点数向量PackedBitBinaryVector
:二进制量化向量(处于beta,在正式发布之前可能会有更改)
要学习;了解有关此功能的更多信息,请参阅Atlas文档中的矢量量化。要学习;了解如何在使用Atlas Vector Search功能时使用此类型,请参阅Atlas Vector Search指南。
从连接池实施中删除显式公平性。 当您在许多应用程序线程中使用
MongoClient
实例时,此更改可能会提高吞吐量。 但是,此更改可能会导致尾部延迟增加。为
updateOne()
和replaceOne()
方法添加排序选项。 此更改还允许您在创建ReplaceOneModel
和UpdateOneModel
实例时将排序设立为选项。 要学习;了解更多信息,请参阅“修改文档”和“批量操作”指南。
支持直接将构建者类方法与数据类属性结合使用。 要学习;了解更多信息,请参阅《结合使用构建器和数据类》指南。随此发布发布的Kotlin驾驶员扩展包支持此功能。
实现客户端批量写入API ,允许您在同一调用中对多个数据库和集合执行写入操作。要学习;了解有关此功能的更多信息,请参阅批量操作指南中的客户端批量写入部分。
5.2 中的新增功能
5.2驾驶员发布包括以下新功能、改进和修复:
允许设置客户端操作超时 (CSOT)。此功能允许您在
MongoClient
实例上设立单个超时,该超时适用于使用该客户端执行的所有操作。要学习;了解更多信息,请参阅限制服务器执行时间指南。重要
已弃用的超时选项
以下超时选项已弃用:
waitQueueTimeoutMS
socketTimeoutMS
wTimeoutMS
maxTimeMS
maxCommitTimeMS
使用 CSOT功能来替换这些选项的功能。
添加
SearchIndexType
类,您可以在构造SearchIndexModel
实例时传递该类。 此更改允许您在创建Atlas Search或 Vector Search索引时指定索引类型。 要学习;了解更多信息,请参阅 索引指南中的Atlas Search和 Vector Search 索引。将实施
SCRAM-SHA-1
和SCRAM-SHA-256
身份验证机制的算法委托给已配置的 JCA提供商来实现。 此更改意味着您的应用程序可以使用已配置的 FIPS 兼容 JCA提供商来提供更高级别的安全性。修改了 mongodb-crypt 依赖项版本控制以匹配Java虚拟机(JVM)驱动程序的版本控制。未来版本的
mongodb-crypt
将与驾驶员一起发布,并股票相同的版本号。 您必须将mongodb-crypt
依赖项升级到 v 5 。 2 。 0 在为此发布升级驾驶员时。 要学习;了解更多信息,请参阅《正在使用的加密》指南。由于在所有支持的平台上实施了原生加密,因此性能得到提升。 以下列表描述了根据您的操作系统实现此改进所需的操作:
Windows :将
mongodb-crypt
版本升级到 v 5.2.0 。Mac :将
mongodb-crypt
版本升级到 v 5.2.0 。Linux :直接在文件系统上安装
libmongocrypt.so
,而不是使用mongodb-crypt
JAR文件中捆绑的文件。 您可以在服务器手册中找到安装libmongocrypt
的Linux说明。 如果使用包管理器安装libmongocrypt
, Java Native Access (JNA) 将在那里找到它,而无需进一步配置。 或者,您可以通过将LD_LIBRARY_PATH
环境变量设置为libmongocrypt
包的文件路径来指定搜索路径。我们建议直接安装,因为 OpenSSL 二进制文件可能不兼容,因此捆绑的共享库不会与 OpenSSL 链接。
共享库加载由 JNA 处理。 您可以在 NativeLibrary 类文档 中查看库加载搜索路径顺序的规则。
修复了导致
InsertOneResult.getInsertedId()
和InsertManyResult.getInsertedIds()
方法在某些情况下返回不正确文档ID 的问题。 此更改将向后移植到Kotlin驾驶员v 5.1.4和 v 4.11.4 。当分片集群操作不成功时,如果有其他
mongos
服务器可用,则驾驶员会避免选择同一mongos
服务器进行操作重试。添加应用程序使用 GraalVM 原生映像时所需的可访问性元数据。 此元数据取代了在使用驾驶员库时收集可达性元数据的需要。 要学习;了解详情,请参阅 可达性元数据 在 GraalVM 文档中。
此更改不会添加
libjnidispatch
和libmongocrypt
资源条目,因为为所有支持的平台(目标)添加条目会显着影响使用 GraalVM 原生映像构建的原生可执行文件的大小。 查看此示例 resource-config.json 驾驶员Github存储库中的 文件,查看在您的应用程序依赖于org.mongodb:mongodb-crypt
库的情况下如何显式指定这些条目。通过扩展
VectorSearchOptions
API引入以下特定选项子类型,从而启用精确向量搜索:ExactVectorSearchOptions
:使用此选项类型可启用精确匹配,确保结果是与给定查询向量最接近的向量。ApproximateVectorSearchOptions
:使用此选项类型可以启用可能不会返回精确的最近向量的搜索。 实例化此类型时,您可以传递numCandidates
参数,以指定要考虑的最近邻数量。
要学习;了解有关使用Atlas Vector Search功能的更多信息,请参阅聚合构建指南中的Atlas Vector Search 。
添加对来自
kotlinx-datetime
库的序列化器的支持,该支持允许您将Kotlin日期和时间类型映射到BSON作为预期类型,而不是作为字符串。 要学习;了解更多信息,请参阅Kotlin序列化指南的序列化日期和时间部分。支持 JsonElement 的序列化 值。要使用
JsonElement
类型,必须将kotlinx-serialization-json
库作为依赖项添加到应用程序中。
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 的更多信息,请参阅《企业身份验证机制》指南中的MONGODB-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 中删除:
ServerAddress 方法
getSocketAddress()
和getSocketAddresses()
。使用
java.net.InetAddress
的getByName()
实例方法,而不是getSocketAddress()
。使用
java.net.InetAddress
的getAllByName()
实例方法,而不是getSocketAddresses()
。UnixServerAddress 方法
getUnixSocketAddress()
。构建
jnr.unixsocket.UnixSocketAddress
实例,而不是getUnixSocketAddress()
。将 UNIX 套接字文件的完整路径传递给构造函数。默认情况下,MongoDB 会创建位于"/tmp/mongodb-27017.sock"
的 UNIX 套接字文件。要了解有关UnixSocketAddress
的详情,请参阅 UnixSocketAddress API 文档。
以下方法和类型与 StreamFactory 相关 接口已弃用,并计划在 v 中删除。5 0:
streamFactoryFactory()
方法来自MongoClientSettings.Builder
getStreamFactoryFactory()
方法来自MongoClientSettings
NettyStreamFactoryFactory
classNettyStreamFactory
classAsynchronousSocketChannelStreamFactory
classAsynchronousSocketChannelStreamFactoryFactory
classBufferProvider
classSocketStreamFactory
classStream
classStreamFactory
classStreamFactoryFactory
classTlsChannelStreamFactoryFactory
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 中的新增功能
4.11 版驱动程序的新增功能包括:
支持使用 SOCKS5 代理连接到 MongoDB。
向
ChangeStreamDocument
类添加getSplitEvent()
方法,从而识别超过 16 MB 的变更流事件的片段。您必须在变更流中使用聚合阶段$changeStreamSplitLargeEvent
来处理超过 16 MB 的事件。已为
$vectorSearch
添加了聚合阶段构建器。添加了 Atlas Search 索引管理辅助工具。
更新了 Snappy 和 Zstd 压缩库依赖项版本。要了解有关当前依赖项版本的更多信息,请参阅网络压缩。
为以下类添加
getElapsedTime()
方法,以监控连接池事件的持续时间:支持 Java 21 虚拟线程和结构化并发。驱动程序内部结构已更新,以避免不必要地虚拟线程绑定,并保留线程中断状态,后者对于用于取消的结构化并发很重要。
要了解有关虚拟线程的详细信息,请参阅虚拟线程 JDK 增强提案。要了解有关结构化并发的详细信息,请参阅结构化并发 JDK 增强提案。
已更新以下类型的 API 文档:
4.10 中的新增功能
重要
从 Kotlin 驱动程序 4.10.1 版开始,您必须将bson-kotlinx
库添加为显式依赖项,才能使用kotlinx-serialization
库。
支持 Kotlin 服务器端使用,包括协程和同步应用程序。
编解码器对 Kotlin 数据类的支持。
支持
kotlinx.serialization
库