文档菜单
文档首页
/ / /
Kotlin 协程

新增功能

本页内容

  • 5.2 版本新增功能
  • 5.1.3 版本新增功能
  • 5.1.2 版本新增功能
  • 5.1.1 版本新增功能
  • 5.1版本更新内容
  • 5.0版本更新内容
  • 4.11版本更新内容
  • 4.10版本更新内容

了解新版本更新内容:

  • 版本5.2

  • 版本5.1.3

  • 版本5.1.2

  • 版本5.1.1

  • 版本5.1

  • 版本5.0

  • 版本4.11

  • 版本4.10

重要

移除对MongoDB服务器3.6的支持

Kotlin驱动程序v5.2移除了对MongoDB服务器3.6的支持。有关兼容版本的信息,请参阅兼容性.

5.2驱动程序版本包括以下新功能、改进和修复

  • 添加了SearchIndexType类,您可以在创建SearchIndexModel实例时传递。此更改允许您在创建Atlas Search或Vector Search索引时指定索引类型。有关更多信息,请参阅索引指南中的Atlas Search和Vector Search索引.

  • 将实现SCRAM-SHA-1SCRAM-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文档中的可达性元数据

    此更改不会添加libjnidispatchlibmongocrypt资源条目,因为在所有支持的平台(目标)上添加条目会显著影响使用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 驱动补丁版本包括以下变更

  • 修复了使用 Cursor 类型时可能引发断言错误的问题。

5.1.2 驱动补丁版本包括以下变更

  • 支持对具有可空泛型参数类型的 Kotlin 数据类进行编码。例如,您可以在以下代码中编码 Container

    @Serializable
    data class Box<T>(
    val boxed: T
    )
    @Serializable
    data class Container(
    val box: Box<String?>
    )

5.1.1 驱动程序补丁版本包括以下更改

  • 当使用 MONGODB-OIDC 身份验证机制时,不得在 authMechanismProperties 连接字符串值中包含逗号字符。有关此行为的更多信息,请参阅企业身份验证指南中的 MONGODB-OIDC 部分。

警告

本版本中已弃用的功能

为了避免在驱动程序的下一个主要版本中发生破坏性更改,请替换任何依赖于已弃用程序元素的应用程序代码。

本节包括以下信息

  • MongoDB 服务器 v3.6 的支持已弃用,并将从下一个驱动程序版本中移除。有关如何升级 MongoDB 服务器部署的说明,请参阅 MongoDB 服务器手册中的 发行说明

  • 对GraalVM本地图像技术的内部测试。这些测试涉及使用GraalVM native-image工具构建本地应用程序。

  • 增强对MONGODB-OIDC身份验证机制的支持。有关OIDC的更多信息,请参阅企业身份验证机制指南中的MONGODB-OIDC部分。

  • 修复了一个问题,该问题在使用多态的MongoCollection实例时使用了错误的编解码器。这确保在使用bson-kotlinx时不会丢失判别信息。

  • 修复了一个问题,该问题在解码时类判别器是第一个字段,导致使用多态的MongoCollection实例时出现字段类型错误。

  • 支持多态序列化。有关更多信息,请参阅Kotlin序列化指南中的多态序列化部分。

  • 引入了serverMonitoringMode连接URI选项。有关更多信息,请参阅连接选项指南。

5.0驱动程序版本的新功能包括

  • 现在,KotlinSerializerCodecProvider 构造函数接受 serializersModulebsonConfiguration 对象

    KotlinSerializerCodec.create(clazz.kotlin, serializersModule=serializersModule, bsonConfiguration=bsonConfiguration)

    这使得自定义配置更加容易。

  • 修复了一个导致容器类型擦除的 Kotlin 反射错误。

本节包括以下信息

警告

本版本中已弃用的功能

为了避免在驱动程序的后续主要版本中引入破坏性更改,请替换任何依赖于弃用方法和类型的应用程序代码。

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驱动版本的新特性包括

  • 支持通过SOCKS5代理连接到MongoDB。

  • ChangeStreamDocument类中添加了getSplitEvent()方法,用于识别超过16MB的更改流事件的片段。您必须在更改流中使用聚合阶段$changeStreamSplitLargeEvent来处理超过16MB的事件。

  • 添加了$vectorSearch的聚合阶段构建器。

  • 添加了Atlas Search索引管理助手。

  • 更新了Snappy和Zstd压缩库的依赖版本。有关当前依赖版本的更多信息,请参阅网络压缩。

  • 向以下类添加了getElapsedTime()方法,以监控连接池事件的持续时间

  • 支持Java 21虚拟线程和结构化并发。驱动内部进行了更新,以避免不必要的虚拟线程锁定,并保留线程的中断状态,因为在结构化并发中,中断状态对于取消操作很重要。

    要了解更多关于虚拟线程的信息,请参阅虚拟线程 JDK增强提案。要了解更多关于结构化并发的信息,请参阅结构化并发 JDK增强提案。

  • 以下类型的API文档已更新

重要

从Kotlin驱动程序4.10.1版本开始,您必须将bson-kotlinx库作为显式依赖项添加,才能使用kotlinx-serialization库。

  • 支持Kotlin服务器端使用,包括协程和同步应用程序。

  • 支持Kotlin数据类的编解码器。

  • 支持kotlinx.serialization

返回

快速参考