“文档” 菜单
文档首页
/ / /
Node.js 驱动程序

新增功能

在此页面上

  • 6.8 中的新功能
  • 6.7 中的新功能
  • 6.6 中的新功能
  • 6.5 中的新功能
  • 6.4 中的新功能
  • 6.3 中的新增功能
  • 6.2 中的新增功能
  • 6.1 中的新增功能
  • 6.0 中的新增功能
  • 5.9 的新增功能
  • 5.8 的新增功能
  • 5.7 中的新增功能
  • 5.6 中的新增功能
  • 5.5 中的新增功能
  • 5.4 的新增功能
  • 5.3 中的新增功能
  • 5.2 中的新增功能
  • 5.1 中的新增功能
  • 5.0 中的新增功能
  • 4.17 中的新增功能
  • 4.16 的新增功能
  • 4.15 中的新增功能
  • 4.14 中的新增功能
  • 4.13 中的新增功能
  • 4.12 中的新增功能
  • 4.11 中的新增功能
  • 4.10 中的新增功能
  • 4.9 的新增功能
  • 4.8 中的新增功能
  • 4.7 中的新增功能
  • 4.6 的新增功能
  • 4.5 中的新增功能
  • 4.4 中的新增功能
  • 4.3 的新增功能
  • 4.2 的新增功能
  • 4.1 中的新增功能
  • 4.0 中的新增功能
  • 3.7 中的新增功能
  • 3.6 中的新增功能

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

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

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

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

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

    以下代码示例展示了如何使用多个 AWS 密钥配置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 响应时对其进行解码。

  • 包的 Githubmongodb 版本现在包含mongodb-X.Y.Z.tgz.sig NPM 包的分离签名文件 。此更改适用于驱动程序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 版本亮点。

重要

从 v5.8 升级到 v5.9

此版本修复了 v5.7 中引入的内存泄漏问题。我们建议升级到 v5.9。

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

  • 修复了 v5.7 中引入的内存泄漏问题。

  • 现在,当 Decimal128 构造函数和 fromString() 方法检测到精度丢失超过 34 位有效数字时,它们会抛出异常。Decimal128 类公开了一个新的 fromStringWithRounding() 静态方法,该方法使用以前版本的驱动程序的舍入行为。如需更多信息,请参阅 GitHub 上js-bson 包 v5.5 发布说明

  • 在 AWS SDK 中调用 fromNodeProviderChain() 方法时,添加了对检测 AWS_STS_REGIONAL_ENDPOINTSAWS_REGION 环境变量以及设置相应选项的支持。

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

重要

从 v5.8 升级到 v5.9

此版本修复了 v5.7 中引入的内存泄漏问题。我们建议升级到 v5.9。

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

重要

弃用通知

AutoEncrypter 接口已弃用。

  • 支持 Kerberos 版本 1.x 和 2.x。

  • 在您设置 tlsCertificateKeyFile 属性时,不会针对 tlsCertificateFile 属性发出弃用错误。

  • 删除了 ConnectionPoolCreatedEvent 类型中的档案可用性。您仍然可以通过 MongoOptions 实例的 credentials 属性访问档案。

  • @aws-sdk/credential-providers 版本降低至 3.188.0 并将 zstd 版本降低至 ^1.0.0。

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

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

重要

弃用通知

  • 以下写关注选项已被弃用:

    • wtimeout

    • j

    • fsync

    要指定写关注行为,请改用 wtimeoutMSjournal 选项。要了解有关这些选项的更多信息,请参阅连接选项页面。

  • SSL 选项和其他传输加密选项已弃用。如需了解有关已弃用选项以及应改为使用哪些替代选项的更多信息,请访问本节末尾提供的“v5.7.0 版本亮点”链接,并参阅其中的“已弃用旧版 SSL 选项”部分。

  • 复合操作方法的新选项。includeResultMetaData 选项允许您指定是否包含有关操作结果的信息。有关更多信息,请参阅“复合操作”指南的内置方法部分。

  • 支持 change stream 拆分事件,可支持处理超过 16MB 最大 BSON 大小限制的 change stream 文档。

  • 用于在应用程序内管理搜索索引的 API。要了解更多信息,请参阅搜索索引

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

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

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

5.5 Node.js 驱动程序版本的新功能包括:

  • 现在,驱动程序可以准确检测 AWS 中的函数即服务 (FaaS) 环境;为此,驱动程序仅考虑以以下内容开头的 AWS 环境变量:AWS_Lambda_

  • 如果您想要使用 Queryable Encryption 功能创建加密集合,则必须将 mongodb-client-encryption 升级到版本 2.8.0 或更高版本。

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

Node.js 驱动程序 5.4 版本的新功能包括:

重要

弃用通知

  • collStats操作已弃用。请改用$collStats聚合操作符。

  • 错误地传递给 db.command() 方法的 TypeScript 接口包含某些选项。这些选项已被弃用。

  • ChangeStream.tryNext 方法现在使用架构特定的 TChange 泛型类型,而不是 Document 接口。

要了解更多信息,请参阅 v5.4.0 版本亮点。

Node.js 驱动程序 5.3 版本的新功能包括:

重要

弃用通知

  • forEach() 游标方法(允许您遍历式访问查询和聚合的结果)已弃用。请改用 for await...of 语法,如此处所示。

  • addUser() 方法已弃用。请改用 createUser()

  • keepAlivekeepAliveInitialDelay 连接选项已弃用。

  • BulkWriteResult 类中包含重复功能的方法已弃用。请参阅 API 文档 有关已弃用方法和首选替代方法的完整列表。

  • 客户端元数据现在包括函数即服务 (FaaS) 环境信息和替代运行时检测。

  • 该驱动程序现在允许包含尾随圆点的 SRV 记录地址。

  • UpdateResult.upsertedId 现在,如果没有更新任何文档,则返回 null。

要了解更多信息,请参阅 v5.3.0 版本亮点。

Node.js 驱动程序 5.2 版本的新功能包括:

  • 该驱动程序现在支持在使用自动 Queryable Encryption 时自动获取 Azure 档案。

要了解更多信息,请参阅 v5.2.0 版本亮点。

5.1 Node.js 驱动程序版本的新功能包括:

  • 驱动程序现在支持将 JavaScript bigint 自动序列化为 BSON.Long。当 useBigInt64 标志作为 true 传递时,驱动程序还支持将从服务器返回的 BSON.Long 值反序列化为 bigint 值。

要了解更多信息,请参阅 v5.1.0 版本亮点。

警告

v5.0 重大更改

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

5.0 Node.js 驱动程序版本的新功能包括:

  • 默认情况下,除非明确使用 StrictFilter 类型注解,否则驱动程序不再检查点符号引用的类型。要了解有关此更改的更多信息,请参阅 Typescript 基础知识页面

    注意

    此更改仅适用于 Typescript,并且不会影响运行时的查询或操作。

  • 可选择安装@aws-sdk/credential-providers 作为对等依赖项。

    • 默认情况下,驱动程序不再包含 AWS SDK 模块。使用以下 npm 命令安装 SDK:

      npm install --save "@aws-sdk/credential-providers@^3.201.0"

      如果您安装该 SDK,在安装的 SDK 版本与驱动程序不兼容时,npm 将向您发送通知。在成功安装依赖项后,驱动程序使用 AWS SDK 本身管理环境中的凭证。

4.17 Node.js 驱动程序版本的新功能包括:

  • 添加 mongodb-js/saslprep 包作为驱动程序依赖项。

  • 改进了与 Queryable Encryption 功能的兼容性。

要了解更多信息,请参阅 v4.17.0 版本亮点。

Node.js 驱动程序 4.16 版本的新功能包括:

  • 在驱动程序握手元数据中包含函数即服务 (FaaS) 平台信息。

  • 在客户端元数据中识别 Deno 运行时使用情况。

要了解更多信息,请参阅 v4.16.0 版本亮点。

4.15 Node.js 驱动程序版本的新功能包括:

  • 支持适用于服务帐户的 AWS IAM 角色。

要了解更多信息,请参阅 v4.15.0 版本亮点。

重要

从 v4.13 升级到 v4.14

此版本修复了 v4.13 中引入的内存泄漏问题。我们建议升级到 v4.14。

Node.js 驱动程序 4.14 版本的新功能包括:

  • 修复了 v4.13 中引入的内存泄漏问题。

  • 已弃用引用旧版记录器的方法和选项。

4.13 Node.js 驱动程序版本的新功能包括:

  • 驱动程序遇到网络超时错误时会自动取消连接池中正在进行的操作。

  • 在隐式会话中禁用因果一致性,以防与 linearizableavailable 读关注设置发生冲突。

  • 确保该驱动程序在销毁 MessageStream 实例连接时销毁这些实例,从而修复了潜在的内存泄漏问题。

重要

将驱动程序升级到版本 4.12.1

4.12.1 Node.js 驱动程序修复了监控逻辑中可能导致进程崩溃的回归问题。

Node.js 驱动程序 4.12 版本的新功能包括:

  • ChangeStream 类重新定义为异步可迭代对象。您可以将 ChangeStream 实例用于任何需要 AsyncIterator 的上下文。

    • 值得注意的是,现在可以在 Javascript for-await 循环中使用变更流:

      const changeStream = myColl.watch();
      for await (const change of changeStream) {
      console.log("Received change: ", change);
      }
  • 修复了驱动程序跳过监控事件时的服务器监控问题。在此版本中中,驱动程序在处理监控事件时始终会更新其拓扑视图。

  • 修改了驱动程序内部使用的数据结构,从而提高了缓冲性能。

要了解更多信息,请参阅 v4.12.0 版本亮点。

连接到 MongoDB Server 版本 6.0 或更高版本时,驱动程序会在服务器发现和监控事件期间优先应用 electionId 设置,并将 setVersion设置排在后面。在以前的版本中,优先级顺序是相反的。

当您安装可选的aws-sdk/credential-providers 依赖项时,驱动程序使用 AWS SDK 从环境中检索 AWS 档案。

要了解有关此行为的更多信息,请参阅身份验证机制指南中的 MONGODB-AWS 部分。

此版本增加了对相互递归集合模式类型的支持。在此版本中,驱动程序还为深度高达 8 的点符号查询提供类型安全。在深度大于或等于 8 时,Typescript 可成功编译代码,但不提供类型安全。递归类型的深度限制是 TypeScript 的当前限制。

假设我们有一个类型为 Collection<Author> 的集合,其中包含以下互递归类型:

interface Author {
name: string;
bestBook: Book;
}
interface Book {
title: string;
author: Author;
}

TypeScript 执行深度最多 8 层的类型检查。以下代码会导致 TypeScript 编译错误,因为 name 属性值必须是 string 类型:

myColl.findOne({ 'bestBook.author.bestBook.title': 25 });

在深度大于或等于 8 时,TypeScript 编译您的代码,但不再对其进行类型检查。例如,以下代码将 number 分配给 string 属性,但不会导致编译错误,因为引用的属性的深度为 10:

myColl.findOne({
'bestBook.author.bestBook.author.bestBook.author.bestBook.author.bestBook.author.name': 25
});

要了解更多信息,请参阅 v4.11.0 版本亮点。

4.10 Node.js 驱动程序版本的新功能包括:

  • Callback 弃用

    • callback 现已弃用,取而代之的是 Promise。下一个主要版本中将删除 callback。Node 驱动程序团队建议尽可能迁移到 Promise:

      • 使用async/await 事务语法。

      • 使用 Node.js callbackify 实用程序:

        require('util').callbackify(() => myColl.findOne())(callback)
      • 使用 then 语法:

        myColl.findOne().then(res => callback(null, res), err => callback(err))
    • 如果无法在大型代码库中迁移到 Promises,可以使用带有可选回调支持的旧版 Node.js 驱动程序

要了解更多信息,请参阅 v4.10.0 版本亮点。

4.9 Node.js 驱动程序版本的新功能包括:

  • 修复了类型定义中与 writeConcern 选项不一致的问题。

  • 包括最新的 BSON 版本,该版本增加了自动 UUID 支持。请参阅此处的 BSON 发布说明。

要了解更多信息,请参阅 v4.9.0 版本亮点。

重要

从 v4.8.0 升级到 v4.8.1

版本 4.8.1 修复了 v4.8.0 中引入的类型回归问题。升级到 v4.8.1 后,您可以在使用 $set$setOnInsert 操作符执行更新时指定 _id 值和子文档。

4.8 Node.js 驱动程序版本的新功能包括:

  • 为更新筛选器中的嵌套键添加了自动完成和类型安全

  • client.startSession() 现在可以在连接到 MongoDB 之前调用

  • estimatedDocumentCount() 方法现在可以接受注释

要了解更多信息,请参阅 v4.8.0 版本亮点。

4.7 Node.js 驱动程序版本的新功能包括:

  • 当连接到 MongoDB 实例时,MongoClient.connect() 方法现在是可选的

  • 能够使用Zstandard压缩算法压缩消息

  • 添加了对 maxConnecting 连接选项的支持

  • 更改流文档功能可显示更新前后的文档

  • 已添加对与集群到集群复制相关的新更改流字段的支持

  • estimatedDocumentCount() 方法现在使用 $count 数据库命令

  • 改进了在 AWS Lambda 初始化阶段与 MongoDB 的连接

重要

弃用通知

ResumeOptions 接口已弃用。请改用 ChangeStreamCursorOptions 接口。

Node.js 驱动程序 4.6 版本的新功能包括:

  • 改进了 TypeScript 中的 ChangeStreamDocument

  • 根据各服务器的负载情况,实现所选服务器的均匀分布

要了解更多信息,请参阅 v4.6.0 版本亮点。

参见 Github 上的 v4.5.0 版本亮点

Node.js 驱动程序 4.4 版本的新功能包括:

  • 使用 CSFLE 时的 KMIP 提供程序支持。

  • 使用 CSFLE 时支持 TLS。

  • 在使用 GSSAPI 时,主机名规范化现在接受将“none”、“forward”和“forwardAndReverse”作为 authMechanismProperties

  • 在驱动程序 4.0.0 版本中,已弃用的 collection.count() 方法会在无意中更改为类似 collection.countDocuments() 的行为。在此版本中,更新了 collection.count() 方法以匹配旧行为:

    • 如果提供了查询,则 collection.count() 的行为与 collection.countDocuments() 相同,并执行集合扫描。

    • 如果未提供查询,则 collection.count() 的行为与 collection.estimatedDocumentCount() 相同,并依赖于集合元数据。

    重要

    弃用通知

    cursor.count() 方法已弃用,并将在下一个主要版本中与 collection.count() 一起被移除。请改用 collection.estimatedDocumentCount()collection.countDocuments() 方法。

Node.js 驱动程序 4.3 版本的新功能包括:

4.2 Node.js 驱动程序版本的新功能包括:

Node.js 驱动程序 4.1 版本的新功能包括:

警告

v4.0 中的重大变化

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

4.0 Node.js 驱动程序版本的新功能包括:

重要

在这个驱动程序版本中,已弃用的 collection.count() 方法会在无意中更改,表现出类似于 collection.countDocuments() 的行为。这种行为已在版本 4.4 得到纠正。

  • 我们已将驱动程序迁移到 TypeScript。您现在可以利用提供相应支持的编辑器中的类型提示和智能感知功能来开发 MongoDB 应用程序。在纯 JavaScript 项目中也能获享这些功能的优势。

  • 此版本使用的底层 BSON 库现已迁移至 TypeScript。

  • 内联文档现已采用一致的格式,从而改善了在编辑器中的显示效果。

  • 如果您是社区类型 @types/mongodb 的用户,则在采用我们代码库中的类型时可能会出现问题。由于在 TypeScript 中编写代码库的细节,我们无法在类型上实现一对一匹配。

我们很乐意倾听您对 TypeScript 相关功能的诉求。请在此处的 JIRA 项目上提交想法。

对于版本 4 的驱动程序,Node.js 现在支持的最低版本是 v12.9 或更高版本。对我们 3.x 分支的支持将持续到 2022 年年中,以便用户有时间进行升级。

注意

3.x 最低支持 Node.js v4。

我们的 Cursor 实现现已更新,明确了在执行操作之前和之后可能发生的情况。

例子

const fc = myColl.find({a: 2.3}).skip(1)
for await (const doc of fc) {
console.log(doc)
fc.limit(1) // incorrect usage, cursor already executing
}

之前,如果在游标执行开始后应用设置,则游标处理错误的方式存在不一致的情况。现在,当尝试在无效状态下应用操作时,游标将抛出类似以下的错误:

MongoError: Cursor is already initialized

  • 受影响的类:

    • AbstractCursor

    • FindCursor

    • AggregationCursor

    • ChangeStreamCursor (这是一个底层的游标,适用于 ChangeStream

    • ListCollectionsCursor

我们的游标类型不再直接扩展 Readable。必须调用 cursor.stream() 以将其转换为流。

例子

const cursor = myColl.find({});
const stream = cursor.stream();
stream.on("data", data => console.log);
stream.on("error", () => client.close());

使用 hasNext()next() 进行手动迭代。使用for await of 事务语法或任何Promise 辅助程序进行异步迭代。

通过类型提示,您应该会发现传递给 MongoClient 的选项是枚举且可发现的。我们付出了巨大的努力以处理驱动程序中的所有选项,以便对不兼容的设置发出早期警告,从而使您的应用程序快速启动并在正确的状态下运行。

  • checkServerIdentity 传递给底层 Node API 之前,系统不再对其进行检查。以前,可接受的值为 false 或函数。现在,参数必须是一个函数。指定布尔值将导致出错。

  • 不再需要指定useUnifiedTopologyuseNewUrlParser

此方法不再支持 strict 选项,该选项会在集合不存在的情况下返回错误。要断言集合是否存在,请改用 listCollections() 方法。

例子

const collections = (await db.listCollections({}, { nameOnly: true })
.toArray()).map(
({name}) => name
);
if (!collections.includes(myNewCollectionName)) {
throw new Error(`${myNewCollectionName} doesn't exist`);
}

BulkWriteError 现已重命名为MongoBulkWriteError

当运行批量写入操作时,您可能会遇到错误,具体取决于您的设置。测试批量操作中是否存在错误时,导入新的类名 MongoBulkWriteError

DB 不再位于EventEmitter中。直接监听来自 MongoClient 实例的事件。

Collection.group() 助手,自 MongoDB 3.4 起弃用,现已删除。请改用聚合管道 $group 操作符。

  • gssapiServiceName 现已删除。 使用 authMechanismProperties.SERVICE_NAME 在 URI 中或作为MongoClientOptions 的选项。

    例子

    ?authMechanismProperties.SERVICE_NAME
    // or
    new MongoClient(url, { SERVICE_NAME: "alternateServiceName" })
  • 仅支持在 URI 中将用户名和密码指定为选项,或者将此项设置作为以下对象上的选项:MongoClientOptions

    例子

    new MongoClient("mongodb://username:password@<host><port>")
    // or
    new MongoClient(url, { auth: { username: "<>", password: "<>" } })

GridStore API(已在 3.x 中弃用)现已替换为 GridFSBucket。有关 GridFS 的更多信息,请参阅 mongodb 手册

下面是一些表示等效操作的代码片段。

例子

// old way
const gs = new GridStore(db, filename, mode[, options])
// new way
const bucket = new GridFSBucket(client.db('test')[,options])

GridFSBucket 使用 Node.js Stream API。您可以通过以下方式复制文件查找:使用 startend 选项,创建一个来自 GridFSBucket 的下载流。

例子

bucket.openDownloadStreamByName(filename, { start: 0, end: 100 })

例子

await client.connect();
const filename = 'test.txt'; // whatever local file name you want
const db = client.db();
const bucket = new GridFSBucket(db);
fs.createReadStream(filename)
.pipe(bucket.openUploadStream(filename))
.on('error', console.error)
.on('finish', () => {
console.log('done writing to db!');
bucket
.find()
.toArray()
.then(files => {
console.log(files);
bucket
.openDownloadStreamByName(filename)
.pipe(fs.createWriteStream('downloaded_' + filename))
.on('error', console.error)
.on('finish', () => {
console.log('done downloading!');
client.close();
});
});
});

注意

GridFSBucket 不需要关闭操作,这不同于 GridStore

例子

// old way
GridStore.unlink(db, name, callback);
// new way
bucket.delete(file_id);

对于过去可在 GridStore 实例上访问的文件元数据,现在可以通过查询存储桶来查找到这些文件元数据。

例子

const fileMetaDataList: GridFSFile[] = bucket.find({}).toArray();
  • 现在,当您连接到 mongod 时,我们在内部仅管理一个 unifiedTopology。要详细了解此版本与之前版本的差异,请访问此处

  • 不再需要指定useUnifiedTopologyuseNewUrlParser

  • 您必须使用新的directConnection 选项 连接到未初始化的副本集成员。

现在添加了对细粒度详细模式的支持。您可以在此处了解每种模式的更多信息。

现已删除 instrument() 方法。请改用命令监控。有关更多信息,请参阅我们的命令监控指南。

Node.js 驱动程序 3.7 版本的新功能包括:

  • 在启用 useUnifiedTopology 选项时,添加了对负载均衡器模式的支持

  • 在启用 useUnifiedTopology 选项时添加了对稳定 API 的支持

3.6 Node.js 驱动程序版本的新功能包括:

  • 添加了对使用 Amazon Web Services (AWS) 身份和访问管理 (IAM) 凭证的 MONGODB-AWS 身份验证机制的支持

  • 对于需要太多内存才能在 RAM 中执行的排序,find() 方法支持 allowDiskUse()

  • update()replaceOne() 方法支持索引提示

  • 缩短了拓扑结构变更和事件故障转移的恢复时间

  • 针对默认 writeConcern 验证测试的改进

  • 身份验证需要减少往返服务器的次数,从而加快连接设置

  • 较短的 Salted 挑战响应身份验证机制 ( SCRAM ) 对话

  • 能够为多个文档事务创建集合和索引

  • 在后台运行集合验证

← 快速参考