新增功能
了解新版本更新内容:
5.2版本更新内容
5.2驱动程序版本包括以下新功能、改进和修复
添加了
SearchIndexType
类,您可以在创建SearchIndexModel
实例时传递。此更改允许您在创建Atlas Search或Vector Search索引时指定索引类型。有关更多信息,请参阅索引指南中的Atlas Search和Vector Search索引.将实现
SCRAM-SHA-1
和SCRAM-SHA-256
身份验证机制的算法实现委托给配置的JCA提供者。此更改意味着您的应用程序可以使用配置的符合FIPS标准的JCA提供者提供更高层次的安全性。修订了mongodb-crypt依赖项版本以匹配JVM驱动程序的版本。将来的
mongodb-crypt
版本将与驱动程序一起发布,并共享相同的版本号。在升级驱动程序时,您必须将mongodb-crypt
依赖项升级到v5.2.0。有关更多信息,请参阅正在使用中的加密指南(点击查看).由于在所有支持的平台上实现了本地加密,性能得到了提升。以下列表描述了根据您的操作系统实现此改进所需的操作
Windows:将您的
mongodb-crypt
版本升级到v5.2.0。Mac:将您的
mongodb-crypt
版本升级到v5.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驱动程序v5.1.4和v4.11.4。当分片集群操作失败时,如果其他
mongos
服务器可用,则驱动程序会避免在操作重试尝试中选择相同的mongos
服务器。添加当您的应用程序使用GraalVM Native Image时所需的可达性元数据。这些元数据取代了在使用驱动库时收集可达性元数据的需求。有关更多信息,请参阅GraalVM文档中的可达性元数据。
此更改不会添加
libjnidispatch
和libmongocrypt
资源条目,因为在所有支持的平台(目标)上添加条目会显著影响使用GraalVM Native Image构建的本地可执行文件的大小。查看此示例resource-config.json文件,了解如何显式指定这些条目,如果您的应用程序依赖于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 驱动补丁版本包括以下变更
支持对具有可空泛型参数类型的 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
连接字符串值中包含逗号字符。有关此行为的更多信息,请参阅企业身份验证指南中的 MONGODB-OIDC 部分。
5.1 新增功能
警告
本版本中已弃用的功能
为了避免在驱动程序的下一个主要版本中发生破坏性更改,请替换任何依赖于已弃用程序元素的应用程序代码。
本节包括以下信息
5.1 中已弃用的功能
MongoDB 服务器 v3.6 的支持已弃用,并将从下一个驱动程序版本中移除。有关如何升级 MongoDB 服务器部署的说明,请参阅 MongoDB 服务器手册中的 发行说明。
5.1版本改进
对GraalVM本地图像技术的内部测试。这些测试涉及使用GraalVM native-image工具构建本地应用程序。
增强对
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) 这使得自定义配置更加容易。
修复了一个导致容器类型擦除的 Kotlin 反射错误。
4.11版本更新内容
本节包括以下信息
4.11版本弃用内容
警告
本版本中已弃用的功能
为了避免在驱动程序的后续主要版本中引入破坏性更改,请替换任何依赖于弃用方法和类型的应用程序代码。
4.11驱动程序版本弃用以下内容
以下与网络地址相关的方法定义为弃用,将在v5.0版本中删除
《ServerAddress》类的ServerAddress方法
getSocketAddress()
和getSocketAddresses()
。不要使用
getSocketAddress()
,而是使用java.net.InetAddress
的实例方法getByName()
。不要使用
getSocketAddresses()
,而是使用java.net.InetAddress
的实例方法getAllByName()
。UnixServerAddress方法
getUnixSocketAddress()
。使用
getUnixSocketAddress()
的方法代替,构建一个jnr.unixsocket.UnixSocketAddress
实例。将UNIX套接字文件的完整路径传递给构造函数。默认情况下,MongoDB创建的UNIX套接字文件位于"/tmp/mongodb-27017.sock"
。要了解更多关于UnixSocketAddress
的信息,请参阅UnixSocketAddress API 文档。
以下与StreamFactory接口相关的方法和类型在v5.0版本中已弃用,并计划删除。
streamFactoryFactory()
方法来自MongoClientSettings.Builder
getStreamFactoryFactory()
方法来自MongoClientSettings
NettyStreamFactoryFactory
类NettyStreamFactory
类AsynchronousSocketChannelStreamFactory
类AsynchronousSocketChannelStreamFactoryFactory
类BufferProvider
类SocketStreamFactory
类Stream
类StreamFactory
类StreamFactoryFactory
类TlsChannelStreamFactoryFactory
类
如果您使用
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()
方法,用于识别超过16MB的更改流事件的片段。您必须在更改流中使用聚合阶段$changeStreamSplitLargeEvent
来处理超过16MB的事件。添加了
$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库