Docs 菜单
Docs 主页
/ / /
Java (Sync) 驱动程序

新增功能

在此页面上

  • 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 Server 3.6 的支持

Java驾驶员5.2 版本删除了对MongoDB Server3.6 的支持。要学习;了解有关服务器兼容版本的详情,请参阅 兼容性。

5.2驾驶员发布包括以下更改、修复和功能:

  • 连接 URI 中托管名和客户端选项之间的正斜杠 ( / ) 字符是可选的。 驾驶员以相同的方式解析以下连接 URI 示例:

    // Connection URI with delimiting forward-slash
    String uri = "mongodb://example.com/?w=majority";
    // Connection URI without delimiting forward-slash
    String uri = "mongodb://example.com?w=majority";

5.1.3 驾驶员补丁发布包括以下更改:

5.1.2 驾驶员补丁发布包括以下更改:

  • 修复了在您将扩展泛型基类的基类指定为MongoCollection实例的泛型类型时,驾驶员无法对扩展泛型基类的具体类进行编码和解码的问题。

  • 修复了使用 SOCKS 5代理功能时如何验证域名的相关问题,从而允许在顶级域中使用六个字符以上的域名。

5.1.1 驾驶员补丁发布包括以下更改:

  • 使用 MONGODB-OIDC身份验证机制时,不得在 authMechanismProperties 连接string值中包含逗号字符。 要学习;了解有关此行为的更多信息,请参阅 Enterprise Authentication指南的MONGODB-OIDC部分。

  • 通过删除冗余字节大量克隆来优化GridFS吞吐量。 GridFSDownloadStreamGridFSUploadStream类型使用BsonDocument类型而不是Document

警告

此版本中的弃用内容

为避免驱动程序的未来主要版本发生破坏性变更 (breaking change),请替换任何依赖于已弃用程序元素的应用程序代码。

本部分包括以下信息:

  • 对MongoDB Server v 3.6的支持已弃用,并将在下一驾驶员发布中删除。 要学习;了解如何升级MongoDB Server部署,请参阅MongoDB Server手册中的发布说明

  • GraalVM 原生映像技术的内部测试。这些测试涉及使用 GraalVM 原生映像工具构建原生应用程序。

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

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

警告

此版本中的破坏性变更 (breaking change)

此驱动程序版本引入了破坏性变更 (breaking change)。有关这些更改的列表,请参阅升级指南中的版本 5.0 破坏性变更 (breaking change)

警告

此版本中的弃用内容

为避免驱动程序的未来主要版本发生破坏性变更 (breaking change),请替换任何依赖于已弃用程序元素的应用程序代码。

本部分包括以下信息:

  • org.mongodb.scala.Observable.completeWithUnit() 方法已弃用。此方法不再可用,因为驱动程序现在公开的是 org.mongodb.scala.Observable[Unit],而不是 org.mongodb.scala.Observable[Void]。这与本版本中有关 Observables 的破坏性变更有关。

  • com.mongodb.event.ConnectionReadyEvent上的getElapsedTime()方法包括交付ConnectionCreatedEvent所需的时间。 也就是说,返回的时间包括com.mongodb.event.ConnectionPoolListener.connectionCreated()方法的持续时间。

    com.mongodb.event.ConnectionCheckedOutFailedEventcom.mongodb.event.ConnectionCheckedOutEvent上的getElapsedTime()方法包括传送com.mongodb.event.ConnectionCheckOutStartedEvent所需的时间。 也就是说,返回的时间包括com.mongodb.eventConnectionPoolListener.connectionCheckOutStarted()方法的持续时间。

5.0 驱动程序版本引入了以下功能:

  • 添加对listCollections命令的authorizedCollection选项的支持。 这是通过更改com.mongodb.client.MongoDatabase.listCollectionNames()方法来实现的。 返回类型现在为com.mongodb.client.ListCollectionNamesIterable ,而以前是MongoIterable<String> 。 此更改允许使用ListCollectionNamesIterable.authorizedCollections()方法并指定authorizedCollections选项来配置返回值。 对以下类和接口进行了等效更改:

    • com.mongodb.reactivestreams.client.MongoDatabase

    • org.mongodb.scala.MongoDatabase

    • com.mongodb.kotlin.client.MongoDatabase

    • com.mongodb.kotlin.client.coroutine.MongoDatabase

    这些更改对 listCollectionsNames() 方法引入了二进制重大更改。 有关 MongoDatabase.listCollectionNames() 方法和 authorizedCollections 选项的更多信息,请参阅listCollections MongoDB Server手册页或获取集合列表。

注意

v 5.0.2 补丁发布修复了与使用 SOCKS 5代理功能时如何验证域名相关的问题,允许您在顶级域中使用六个字符以上的域名。

本部分包括以下信息:

警告

此版本中的弃用内容

为避免驱动程序未来的主要版本出现破坏性更改,请替换任何依赖于弃用方法和类型的应用程序代码。

4.11 版驱动程序已弃用以下内容:

  • DBCollection 类的 getStats()isCapped() 实例方法已被弃用。相应的服务器命令在 MongoDB v6.2 及更高版本中已弃用。请改用 $collStats 聚合管道阶段来检索这些方法提供的信息。您可以按照以下代码示例所示运行聚合:

    Cursor cursor = collection.aggregate(Arrays.asList(
    new BasicDBObject("$collStats",
    new BasicDBObject("storageStats", new BasicDBObject()))),
    AggregationOptions.builder().build()
    );

    要确定集合是否为上限集合,请访问前面示例聚合中的 Cursor 实例返回的 storageStats.capped 字段的值。

    如需了解有关 $collStats 聚合操作符的更多信息,请参阅“$collStats(聚合)服务器”手册条目。

  • 以下与网络地址相关的方法已弃用,并将在 v5.0 中删除:

  • 以下方法和类型与 StreamFactory 相关 接口已弃用,并计划在 v 中删除。5 0:

    • streamFactoryFactory() 方法来自 MongoClientSettings.Builder

    • getStreamFactoryFactory() 方法来自 MongoClientSettings

    • NettyStreamFactoryFactory class

    • NettyStreamFactory class

    • AsynchronousSocketChannelStreamFactory class

    • AsynchronousSocketChannelStreamFactoryFactory class

    • BufferProvider class

    • SocketStreamFactory class

    • Stream class

    • StreamFactory class

    • StreamFactoryFactory class

    • TlsChannelStreamFactoryFactory 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 版驱动程序的新增功能包括:

注意

v 4.11.3 补丁发布修复了与使用 SOCKS 5代理功能时如何验证域名相关的问题,允许您在顶级域中使用六个字符以上的域名。

  • ChangeStreamDocument 类添加 getSplitEvent() 方法,从而识别超过 16 MB 的变更流事件的片段。您必须在变更流中使用聚合阶段 $changeStreamSplitLargeEvent 来处理超过 16 MB 的事件。要了解详情,请参阅分割大型变更流事件

  • 已为 $vectorSearch 添加了聚合阶段构建器。要了解详细信息,请参阅 Atlas Vector Search。

  • 添加了 Atlas Search 索引管理助手。如需了解更多信息,请参阅“Atlas Search 索引”。

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

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

  • 支持 Java 21 虚拟线程和结构化并发。驱动程序内部结构已更新,以避免不必要地虚拟线程绑定,并保留线程中断状态,后者对于用于取消的结构化并发很重要。

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

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

4.10 版驱动程序的新增功能包括:

  • 实现统计聚合的 Accumulators.percentile()Accumulators.median() 方法。

  • com.mongodb.client.model.search 包中的接口现在标记为 @Sealed,而不是 @Evolving。密封接口不得由库的用户扩展或实现。

  • 解决了驱动程序为重试操作发出重复日志消息的问题。驱动程序现在为每个重试操作正确发出一条日志消息。

  • org.bson.codecs.Parameterizable 接口已弃用。如果解码器适用于参数化类型,请重写编解码器的 CodecProvider 上的 CodecProvider.get() 方法,而不是在自定义 Codec 类型上实现此接口。

  • 支持自定义 DNS 解析程序。

  • 支持可查询加密 (QE)。要详细了解使用 QE 功能的要求,请参阅可查询加密驱动程序兼容性表

后退

快速参考