Docs 菜单
Docs 主页
/ / /
Node.js 驱动程序

新增功能

在此页面上

  • 6.10 中的新功能
  • 6.9 中的新功能
  • 6.8 中的新功能
  • 6.7 中的新功能
  • 6.6 中的新功能
  • 6.5 中的新功能
  • 6.4 中的新功能
  • 6.3 中的新增功能
  • 6.2 中的新增功能
  • 6.1 中的新增功能
  • 6.0 中的新增功能

了解以下版本中的新功能:

  • 版本 6.10

  • 版本 6.9

  • 版本 6.8

  • 版本 6.7

  • 版本 6.6

  • 版本 6.5

  • 版本 6.4

  • 版本 6.3

  • 版本 6.2

  • 6.1 版本

  • 版本 6.0

Node.js驾驶员v 6.10发布是第一个支持所有MongoDB Server 8.0 功能的官方发布,并包括以下改进和修复:

  • 删除了对MongoDB Server 3.6 的支持。

  • 新增支持MongoDB Server 8.0 批量写入API的支持,该 API 支持在一次调用中跨多个数据库和集合进行批量写入操作。

  • 允许 SRV 主机名少于三个部分,每个部分之间用 . 字符分隔。示例,驾驶员现在支持 mongodb+srv://mongodb.local 等主机名。

  • 支持 解释选项,以便检索增删改查命令的准确maxTimeMS 值以描述optimeCRUD optime。查找和聚合操作的解释选项已弃用。

要学习;了解有关此发布的更多信息,请参阅 6.10.0GithubGitHub 上的 v 发布说明 。

  • 对MongoDB Server 3.6的支持已弃用,并将在未来的驾驶员发布中删除。

  • 该驾驶员本身支持对游标以及MongoClientClientSessionChangeStream对象进行显式资源管理。 使用兼容的 Node.js 版本时,可以使用cursor.stream()方法和GridFSDownloadStream类实现显式资源管理。

    要学习;了解如何使用显式资源管理,请参阅 v6.9.0 发布说明 在Github 上。有关显式资源管理的更多信息,请参阅 ECMAScript 显式资源管理提案 在Github 上。

  • 如果您使用的是 Node.js 18.13或更高版本,则可以将autoSelectFamilyautoSelectFamilyTimeout选项传递给MongoClient构造函数。 当autoSelectFamily选项为true时,驾驶员会自动在 IPv 4或 IPv 6连接之间进行选择。 autoSelectFamilyTimeout选项指定驾驶员选择连接族的超时时间(以毫秒为单位)。

    以下代码示例展示了如何使用这些选项:

    const client = new MongoClient(uri,
    { autoSelectFamily: true, autoSelectFamilyTimeout: 100 });
  • MongoClient构造函数接受allowPartialTrustChain选项。 此选项控制X509_V_FLAG_PARTIAL_CHAIN OpenSSL 标志。

  • ConnectionCheckedOutEventConnectionCheckFailedEvent现在包含durationMS属性。 此属性指示连接签出操作开始和结束之间经过的时间。

  • 如果您使用的是 Node.js 18或更高版本,则驾驶员会忽略cryptoCallbacks选项并使用C++中定义的回调,从而显着提高加密性能。 此更改可在 v 6.1.0 mongodb-client-encryption包的版本。

  • 为了增强安全性,指定mongocryptd的生成路径和参数的选项必须是autoEncryption.extraOptions自己的属性。 此更改有助于防止与这些选项相关的全局原型污染错误。 有关自有属性的更多信息,请参阅 Object.hasOwn() 在 MDN 上。

  • 添加对可查询Queryable Encryption(QE)范围查询的官方支持。 要使用此功能,您的应用必须使用mongodb-client-encryption v 6.1.0或更高版本,并且必须连接到MongoDB Server 8.0或更高版本。 有关 QE范围查询的更多信息,请参阅MongoDB Server手册中的可查询Queryable Encryption

  • insertMany()bulkWrite()方法接受ReadonlyArray输入。

  • 驾驶员根据error.code中找到的顶层代码(而不是error.result.writeConcernError.code中的嵌套代码)重试写入。 这修复了运行4.4之前版本的分片的 MongoDB Server的分片集群中的问题。

  • LocalKMSProviderConfiguration.key属性接受 的BSONBinary AutoEncryptionOptions实例。

  • 在Typescript中,BulkOperationBase 类报告 length getter属性。

  • MongoWriteConcernError类型现在会保留MongoWriteConcernError.code中的原始顶级代码。

  • cursor.toArray()方法将当前批处理的文档清空到大量中,然后再次调用异步迭代器。 此更改避免了与async / await执行相关的延迟,并将性能平均提高了5 %。 如果您在调用toArray()方法之前为cursor.map()方法提供转换,则此优化不应用。

  • 修复了将cursor.next()方法与for await语法混合使用的问题。

  • 在反序列化BSON时添加enableUtf8Validation选项,该选项在 Node.js驾驶员v 6.8中被无意中删除。

  • durationMS属性添加到ConnectionReadyEvent类中。 此属性表示连接创建事件与ConnectionReadyEvent触发之间的时间。

要了解有关此版本的更多信息,请参阅 v6.9.0 版本说明

Node.js 驱动程序 v6.8 版本包括以下功能:

  • 修复本地KMS提供商在运行时接受 BSON Binary实例,但Typescript编译器仅允许 Bufferstring 类型的值的错误。

  • ReadConcernMajorityNotAvailableYet错误现在是可重试读取错误。

  • 现在,您可以将名称与KMS提供商相关联,并为其提供多个密钥。 此功能需要mongodb-client-encryption v 6.0.1或更高版本。 如果您的应用程序使用自动KMS提供商刷新功能,则无法使用命名KMS提供程序。

    以下代码示例演示如何使用多个Amazon Web Services键配置 ClientEncryption对象:

    const clientEncryption = new ClientEncryption(keyVaultClient, {
    'aws:key1': {
    accessKeyId: ...,
    secretAccessKey: ...
    },
    'aws:key2': {
    accessKeyId: ...,
    secretAccessKey: ...
    },
    clientEncryption.createDataKey('aws:key-1', { ... });
  • 创建 KMIP 数据密钥时,现在可以指定delegated选项。 如果此选项设立为true ,则 KMIP提供商在本地执行数据密钥的加密和解密,确保加密密钥永远不会离开 KMIP服务器。 此功能需要mongodb-client-encryption v 6.0.1或更高版本。

    以下代码示例展示了如何指定此选项:

    clientEncryption.createDataKey('kmip', { masterKey: { delegated: true } } );
  • 驾驶员现在会在游标遍历BSON响应时对其进行解码,而不是在收到整个BSON响应时对其进行解码。

  • mongodb包的Github发布现在包含npm包的分离签名文件mongodb-X.Y.Z.tgz.sig。 此更改适用于驾驶员5 .x 和6 .x 版本的每个主要版本和补丁发布。 要验证包签名,请按照 README.md Github的“发布完整性”部分中的说明进行操作。 驱动程序的 存储库中的文件。

要了解有关此版本的更多信息,请参阅 v6.8.0 版本说明

Node.js 驱动程序 v6.7 版本包括以下功能:

  • 添加了连接到 MongoDB Server v 7.0 及更高版本时对 MONGODB-OIDC 身份验证机制的支持。该驱动程序支持使用 Azure 机器身份验证、GCP 机器身份验证、回调身份验证和人机交互回调身份验证分面(Facet)进行身份验证。

  • 修复了将 useBigInt64 标志设置为 true 会导致内部 compareTopologyVersion 函数生成错误的问题。

要了解有关此版本的更多信息,请参阅 v6.7.0 版本说明

Node.js 驱动程序 v6.6 版本包括以下功能:

  • 升级为使用 BSON 6.7.0。有关新 BSON 功能的详细信息,请参阅 BSON 6.5.0BSON 6.6.0BSON 6.7.0. 的发布说明。

  • addStage() 方法添加到流体聚合 API 中。您可以使用此方法单独添加聚合管道阶段,如以下示例中所示:

    const documents = await users.aggregate().addStage({ $project: { name: true } }).toArray();
  • MongoMissingDependencyError 类添加 causedependencyName 字段。您可以使用这些字段以编程方式确定包是否丢失或包未加载的原因。

  • minRoundTripTime 属性添加到 ServerDescription 类。该属性包含最近 10 次心跳的最短往返时间。

  • toJSON() 方法添加到 TopologyDescription 类。尽管您可以使用此方法将 TopologyDescription 对象字符串化为 JSON,但我们建议改用 Node 的 util.inspect() 方法,因为它可以正确处理 JavaScript 和驱动程序中使用的所有类型。

  • 为 Typescript 中的 Collection.indexExists()Collection.indexes()Collection.indexInformation() 方法添加游标选项支持。

  • Collection.listSearchIndexes() 方法中删除对 readConcernwriteConcern 选项的支持。listSearchIndexes() 是特定于 Atlas 的方法,且 Atlas 搜索索引不支持这些选项。

  • ServerDescription.roundTripTime 属性重新定义为移动平均值。以前,它是最近观察到的心跳持续时间和之前持续时间的加权平均值。

  • 您可以在创建索引时指定搜索索引的类型,如下例所示:

    const indexName = await collection.createSearchIndex({
    name: 'my-vector-search-index',
    type: 'vectorSearch',
    definition: {
    mappings: { dynamic: false }
    }
    });
  • 在将 UpdateFilter.$currentDate 属性传递给具有有限模式的集合上的复合方法(如 findOneAndUpdate() )时,该属性不再引发错误。

  • 仅当您提供除 primary 以外的 ReadPreferenceMode,然后尝试执行涉及读取操作的命令时,驱动程序才会抛出 MongoTransactionError

  • TopologyDescription.error 属性的数据类型为 MongoError

  • Collection.indexExists() 方法不再支持 full 选项。

  • 在 TypeScript 中,Collection.indexInformation()Collection.indexes()Db.indexInformation() 方法的返回类型为 IndexDescriptionCompact | IndexDescriptionInfo[]

  • 检索 AWS KMS(密钥管理系统)凭证时,驱动程序在收到包含过期时间戳的访问密钥时不再抛出错误。

  • 在 TypeScript 中,ClusterTime 接口不再定义 signature 字段为必需的字段。

要了解有关此版本的更多信息,请参阅 GitHub 上的 v6.6.0 版本亮点

Node.js 驱动程序 v6.5 版本包括以下功能:

  • 更新批量写入操作以使用 pkFactory 类生成文档 ID。

警告

如果您之前指定了一个 pkFactory 实例来处理批量写入,那么文档中使用批量写入插入的 _id 字段可能会与此版本中的行为不一致。

  • 修复了在驱动程序连接到副本集中的从节点时,通过读取操作发送到 primaryPreferred 的读取偏好。

  • 修复了在套接字操作的承诺创建中引起的内存泄漏。

  • 通过并行查询 SRVTXT 记录,减少连接到 DNS 种子列表时的首次连接延迟。

  • 在 Kubernetes 中运行客户端时,在握手文档的 client.env.container 字段中添加对容器元数据的跟踪。

  • 将服务器返回的原始错误文档添加到 MongoServerError 文档的 errorResponse 字段。

  • 弃用驱动程序未使用的 CloseOptions 接口。

要了解有关此版本的更多信息,请参阅 GitHub 上的 v6.5.0 版本亮点

Node.js 驱动程序 v6.4 版本包括以下功能:

  • 当存在多个 mongos 实例时,读写重试尝试将使用不同的服务器。

  • 在客户端级别缓存 AWS 凭据,避免每次身份验证时都重新获取。

  • 升级为使用 BSON 6.4.0。有关 BSON 新功能的详细信息,请参阅 BSON 6.3.0BSON 6.4.0 的发布说明。

  • 重试导致 ExceededTimeLimit 错误的读操作。

  • 修复与 TLS 套接字KMS提供程序相关的请求问题。

  • 修复了 saslContinue 命令的 base64 填充,以允许进行 mongosh 身份验证。

  • 类型 countDocuments 使用 Filter<Schema> 而不是 Document,这支持自动完成并有助于防止下游的键入问题。

  • 修复了 bulkWrite 命令的 $addToSet 选项中的类型错误。驱动程序会跳过您从 Documentany 扩展类型或使用任何类型属性的 $addToSet 验证。

  • 修复 ServerHeartbeatSucceededServerHeartbeatFailed 事件检测信号持续时间,使其不包括创建套接字的时间。

  • 适当地从游标转换流中发出错误,而不是消除错误。

  • 在提供用户名和密码时,使 AWS 会话令牌成为可选,并允许 AWS SDK 处理身份验证请求。

要了解有关此版本的更多信息,请参阅 GitHub 上的 v6.4.0 版本亮点

Node.js 驱动程序 v6.3 版本包含以下功能:

  • 添加 serverMonitoringMode 客户端选项,以控制拓扑中节点之间的监控连接行为。此选项的值可为 auto(默认值)、pollstream。要了解更多信息,请参阅连接选项指南中该选项的相应条目。

    您可以在 serverMonitoringMode 实例中设置 MongoClientOptions 选项,也可以将其设置为连接字符串选项。以下示例展示了如何创建一个客户端,并将选项设置为 stream

    new MongoClient('<connection string>', { serverMonitoringMode: 'stream' });
  • 修复了设置 serverApi 客户端选项时的连接泄漏问题。

  • 弃用contentTypealiases GridFS 选项。要存储文件的内容类型和别名,请将contentTypealiases 字段添加到metadata文档中。

要了解有关此版本的更多信息,请参阅 v6.3.0 版本亮点。

Node.js 驱动程序 v6.2 版本包括以下功能:

  • bson 包版本更新到 6.2.0 以包含类型的颜色可视化效果,如下图所示:

    显示彩色打印的终端屏幕截图

    要了解更多信息,请参阅 bson v6.2.0 发布说明

  • 确保批写入错误类型的 result.insertedIds 属性包含已成功插入文档的 _id 值。在之前的版本中,当批写入操作拒绝插入操作时,result.insertedIds 属性包含所有已尝试插入的 _id 值。

  • 关闭在时间序列集合上运行 findOne() 方法时创建的隐式会话,无论操作的结果如何。

  • 允许创建名称以. 字符开头或结尾的集合。此更改使驱动程序的数据库和集合名称校验行为与服务器的相应行为保持一致。

要了解有关此版本的更多信息,请参阅 v6.2.0 版本亮点。

Node.js 驱动程序 v6.1 版本包含以下功能:

  • bson 软件包版本更新至 6.1.0 以公开 Decimal128.fromStringWithRounding() 方法。要了解更多信息,请参阅 v6.1.0 bson 发布说明。

  • 在使用 MONGODB-AWS 身份验证机制进行身份验证时,检测区域设置的环境变量。要指示该驱动程序使用区域选项,您必须同时设置以下两个环境变量:

    • AWS_STS_REGIONAL_ENDPOINTS

    • AWS_REGION

  • 修复了因递归调用 ChangeStream 类型的 next() 方法而导致的内存泄漏问题。

要了解有关此版本的更多信息,请参阅 v6.1.0 版本亮点。

警告

v6.0 的重大更改

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

Node.js 驱动程序 v6.0 版本包括以下功能:

重要

弃用通知

MongoClientOptions 类型中所有以 ssl 为前缀的选项均已弃用。此外,tlsCertificateFile 选项已弃用。

取而代之的是,您应将证书存储在 SecureContext 对象中,或在 MongoClientOptions 实例中设置以 tls 为前缀的选项。要了解更多信息,请参阅在连接上启用 TLS。

  • 移除了对 addUser() 辅助命令的支持。请改用 createUser MongoDB Shell 命令。

  • 移除了对 collStats 操作的支持。请改用 $collStats 聚合操作符。

  • ConnectionPoolCreatedEvent 类型的 options 字段只包含以下字段,这些字段是非默认池选项:

    • maxConnecting

    • maxPoolSize

    • minPoolSize

    • maxIdleTimeMS

    • waitQueueTimeoutMS

  • 在您调用 MongoClient.connect() 方法而不是创建 MongoClient 实例时,该驱动程序异步读取在 tlsCAFiletlsCertificateKeyFile 连接选项中设置的文件。

  • 删除了keepAlivekeepAliveInitialDelay 连接选项。keepAlive的值永久设置为true,而 keepAliveInitialDelay 的值设置为 300000 毫秒(300 秒)。

    要了解如何在系统级别设置 keepalive 设置,请参阅服务器手册中“TCP keepalive 时间是否影响 MongoDB 部署?”的常见问题解答条目。

  • 删除了 Db.command() 方法的以下选项:

    • willRetryWrite

    • omitReadPreference

    • writeConcern

    • explain

    • readConcern

    • collation

    • maxTimeMS

    • comment

    • retryWrites

    • dbName

    • authdb

    • noResponse

    尽管您无法将这些选项传递给 Db.command() 方法,但您仍然可以在命令文档中设置这些选项。要了解更多信息,请参阅运行命令指南中的命令选项部分。

要了解有关此版本的更多信息,请参阅 v6.0.0 版本亮点。

后退

快速参考