了解以下版本中的新功能:
6.15 中的新功能
Node.js 驱动程序 v6.15 版本包括以下功能:
新增对在配置 身份验证或“正在使用的加密”时提供自定义Amazon Web Services凭证的支持。您必须按以下形式提供自定义函数签名:
() => Promise<AWS.Credentials> 您还可以指定Amazon Web Services SDK 中的提供商链,以便自定义选项。 要查看如何提供自定义凭证的示例,请参阅Github上的v6.15.0发布说明。
修复了一个错误,该错误导致当客户端重新进行身份验证时,为具有
AbortSignal的OIDC配置的MongoClient在游标上中止。修复了一个错误,该错误会导致在操作进入服务器选择进程之前
timeoutms过期时引发未处理的拒绝。修复了因在处理变更事件时关闭变更流而导致的错误。此错误导致潜在错误,导致拒绝表示“下一个”更改的内部承诺。
要了解有关此版本的更多信息,请参阅 v6.15.0 版本说明。
6.14 中的新功能
Node.js 驱动程序 v6.14 版本包括以下功能:
添加对加密集合上的
$lookup聚合阶段的支持。您必须将mongodb-client-encryption包升级到 v6.3.0 或更高版本才能使用此功能。使用驱动程序的
isUint8Array()方法实施来防止导入util/types包。将
@aws-sdk/credential-providers的版本兼容性恢复为 v3.188.0。
要了解有关此版本的更多信息,请参阅 v6.14.0 版本说明。
6.13 中的新功能
Node.js 驱动程序 v6.13 版本包括以下功能:
添加新的标准化记录器,无需更改代码启用见解数据库操作。 您可以通过环境变量启用和配置记录器,如以下示例所示:
env MONGODB_LOG_ALL=debug node server.mjs 要学习;了解有关日志记录的更多信息,请参阅 日志记录指南。
通过删除命令和回复对象的深度副本来提高命令监控性能。 修改命令和响应值可能会导致未定义的行为。
添加实验性中止信号功能。 您可以将
signal命令传递给以下方法,以便在触发信号时中断方法的执行:collection.find()collection.findOne()collection.aggregate()collection.countDocuments()db.listCollections()db.command()
中止信号会关闭连接,这可能会导致不必要的重新建立连接。
为了避免潜在的 DNS 超时错误,驱动程序会在解析
mongodb+srv://连接字符串时捕获并重试 DNS 查找。MongoClient.close()还会关闭所有关联的游标。您可以安全地同时调用
MongoClient.close(),但如果可以避免,我们不建议这样做。修复导致
MONGODB-OIDC身份验证在握手包含推测性身份验证的情况下无法正确重新进行身份验证的问题。
要了解有关此版本的更多信息,请参阅 v6.13.0 版本说明。
6.12 中的新功能
Node.js 驱动程序 v6.12 版本包括以下功能:
新增对
zstd压缩算法v2.0 的支持。有关zstdv2.0 的更多信息,请参阅Github上的zstd发布说明。将
bson包升级到 v6.10.1。有关此发布的更多信息,请参阅Github上针对bson包的v6.10.1发布说明。将主节点 (primary node in the replica set)副本集成员标记为过时时,驾驶员会使用更具体的错误类型和消息填充
ServerDescription.error字段。驱动程序以对象模式(而不是缓冲模式)的流读取套接字数据。这可以防止在极少数情况下由于不准确的数据块而导致的消息解析错误。
如果驱动程序在连接到ocks5代理时遇到错误,则不再将socks5错误包装在
MongoNetworkError中。这可以防止驱动程序将MongoNetworkError包装在另一个MongoNetworkError中。
要了解有关此版本的更多信息,请参阅 v6.12.0 版本说明。
6.11 中的新功能
Node.js 驱动程序 v6.11 版本包括以下功能:
添加了对 Node.js v22 的支持。
添加客户端操作超时 (CSOT)功能。 您可以使用 CSOT 对完成服务器端操作所需的所有步骤应用单个超时,包括服务器选择、连接签出、序列化和服务器端执行。 要学习;了解更多信息,请参阅限制服务器执行时间指南。
注意
实验功能
CSOT功能是实验性的,可能在未来的驱动程序发布中发生变化。
为Kubernetes环境添加 OIDC身份验证支持。 要学习;了解有关此功能的更多信息,请参阅企业身份验证机制指南中的 MONGODB-OIDC 部分。
要使用 OIDC 从Kubernetes环境中进行身份验证,请在连接字符串中将
authMechanismProperties连接选项设立为ENVIRONMENT:k8s。 连接到在 Amazon Elastic Kubernetes Service、Google Kubernetes Engine 或Azure Kubernetes Service 中运行的环境时,可以使用此功能。bson包增加了对二进制向量数据的支持。要学习;了解有关此功能的更多信息,请参阅Github上针对bson包的v6.10.0发布说明。驱动程序在
PoolClearedEvents之后发出ConnectionClosedEvents。
要了解有关此版本的更多信息,请参阅 v6.11.0 版本说明。
6.10 中的新功能
Node.js驱动程序v6.10发布是第一个支持所有MongoDB Server 8.0 功能的官方发布,并包括以下改进和修复:
删除了对MongoDB Server 3.6 的支持。
新增支持MongoDB Server 8.0 批量写入API的支持,该 API 支持在一次调用中跨多个数据库和集合进行批量写入操作。
允许 SRV 主机名少于三个部分,以
.字符分隔。示例,驾驶员现在支持mongodb+srv://mongodb.local等主机名。支持 解释选项,以便检索增删改查命令的准确
maxTimeMS值以描述optimeCRUD optime。查找和聚合操作的解释选项已弃用。
要了解有关此版本的更多信息,请参阅 v6.10.0 版本说明。
6.9 中的新功能
对MongoDB Server 3.6 的支持已弃用,并将在未来的驱动程序发布中删除。
驱动程序本身支持对游标以及
MongoClient、ClientSession和ChangeStream对象进行显式资源管理。使用兼容的 Node.js 版本时,可以使用cursor.stream()方法和GridFSDownloadStream类实现显式资源管理。如需学习;了解如何使用显式资源管理,请参阅 GitHub 上的 v6.9.0 发布说明。有关显式资源管理的更多信息,请参阅 TC 网站上的 ECMAScript39 显式资源管理提案。
如果您使用的是 节点.js 18.13 或更高版本,则可以将
autoSelectFamily和autoSelectFamilyTimeout选项传递给MongoClient构造函数。当autoSelectFamily选项为true时,驱动程序会自动在 IPv4 或 IPv6 连接之间进行选择。autoSelectFamilyTimeout选项指定驱动程序选择连接族的超时时间(以毫秒为单位)。以下代码示例展示了如何使用这些选项:
const client = new MongoClient(uri, { autoSelectFamily: true, autoSelectFamilyTimeout: 100 }); MongoClient构造函数接受allowPartialTrustChain选项。 此选项控制X509_V_FLAG_PARTIAL_CHAINOpenSSL 标志。ConnectionCheckedOutEvent和ConnectionCheckFailedEvent现在包含durationMS属性。 此属性指示连接签出操作开始和结束之间经过的时间。如果您使用的是 Node.js 18 或更高版本,则驱动程序会忽略
cryptoCallbacks选项并使用C++中定义的回调,从而显着提高加密性能。此更改可在 v6.1.0mongodb-client-encryption包的版本。为了增强安全性,指定
mongocryptd的生成路径和参数的选项必须是autoEncryption.extraOptions自己的属性。此更改有助于防止与这些选项相关的全局原型污染错误。有关自有属性的更多信息,请参阅 MDN 上的 Object.hasOwn()。添加对可查询Queryable Encryption(QE)范围查询的官方支持。 要使用此功能,您的应用必须使用
mongodb-client-encryptionv 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属性接受 的BSONBinaryAutoEncryptionOptions实例。在Typescript中,
BulkOperationBase类报告lengthgetter属性。MongoWriteConcernError类型现在会保留MongoWriteConcernError.code中的原始顶级代码。cursor.toArray()方法将当前批处理的文档清空到大量中,然后再次调用异步迭代器。 此更改避免了与async/await执行相关的延迟,并将性能平均提高了5 %。 如果您在调用toArray()方法之前为cursor.map()方法提供转换,则此优化不应用。修复了将
cursor.next()方法与for await语法混合使用的问题。在反序列化BSON时添加
enableUtf8Validation选项,该选项在 节点.js驱动程序v6.8 中被无意中删除。将
durationMS属性添加到ConnectionReadyEvent类中。 此属性表示连接创建事件与ConnectionReadyEvent触发之间的时间。
要了解有关此版本的更多信息,请参阅 v6.9.0 版本说明。
6.8 中的新功能
Node.js 驱动程序 v6.8 版本包括以下功能:
修复本地KMS提供商在运行时接受
BSON Binary实例,但Typescript编译器仅允许Buffer和string类型的值的错误。ReadConcernMajorityNotAvailableYet错误现在是可重试读取错误。现在,您可以将名称与KMS提供商相关联,并为其提供多个密钥。 此功能需要
mongodb-client-encryptionv 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-encryptionv 6.0.1或更高版本。以下代码示例展示了如何指定此选项:
clientEncryption.createDataKey('kmip', { masterKey: { delegated: true } } ); 驱动程序现在会在游标遍历BSON响应时对其进行解码,而不是在收到整个BSON响应时对其进行解码。
mongodb包的 Github 发布现在包含 NPM 包的单独签名文件mongodb-X.Y.Z.tgz.sig。此更改应用于驱动程序 5.x 和 6.x 版本的每个主要版本和补丁发布。要验证包签名,请按照驱动程序的 GitHub 存储库中 README.md 文件的发布完整性部分中的说明进行操作。
要了解有关此版本的更多信息,请参阅 v6.8.0 版本说明。
6.7 中的新功能
Node.js 驱动程序 v6.7 版本包括以下功能:
添加了连接到 MongoDB Server v 7.0 及更高版本时对
MONGODB-OIDC身份验证机制的支持。该驱动程序支持使用 Azure 机器身份验证、GCP 机器身份验证、回调身份验证和人机交互回调身份验证分面(Facet)进行身份验证。修复了将
useBigInt64标志设置为true会导致内部compareTopologyVersion函数生成错误的问题。
要了解有关此版本的更多信息,请参阅 v6.7.0 版本说明。
6.6 中的新功能
Node.js 驱动程序 v6.6 版本包括以下功能:
升级为使用BSON 6.7.0。有关BSON新功能的详细信息,请发布BSON 6.5.0、BSON 6.6.0,和BSON 6.7.0。
将
addStage()方法添加到流体聚合 API 中。您可以使用此方法单独添加聚合管道阶段,如以下示例中所示:const documents = await users.aggregate().addStage({ $project: { name: true } }).toArray(); 为
MongoMissingDependencyError类添加cause和dependencyName字段。您可以使用这些字段以编程方式确定包是否丢失或包未加载的原因。将
minRoundTripTime属性添加到ServerDescription类。该属性包含最近 10 次心跳的最短往返时间。将
toJSON()方法添加到TopologyDescription类。尽管您可以使用此方法将TopologyDescription对象字符串化为 JSON,但我们建议改用 Node 的util.inspect()方法,因为它可以正确处理 JavaScript 和驱动程序中使用的所有类型。为 Typescript 中的
Collection.indexExists()、Collection.indexes()和Collection.indexInformation()方法添加游标选项支持。从
Collection.listSearchIndexes()方法中删除对readConcern和writeConcern选项的支持。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 版本亮点。
6.5 中的新功能
Node.js 驱动程序 v6.5 版本包括以下功能:
更新批量写入操作以使用
pkFactory类生成文档 ID。
警告
如果您之前指定了一个 pkFactory 实例来处理批量写入,那么文档中使用批量写入插入的 _id 字段可能会与此版本中的行为不一致。
修复了在驱动程序连接到副本集中的从节点时,通过读取操作发送到
primaryPreferred的读取偏好。修复了在套接字操作的承诺创建中引起的内存泄漏。
通过并行查询
SRV和TXT记录,减少连接到 DNS 种子列表时的首次连接延迟。在 Kubernetes 中运行客户端时,在握手文档的
client.env.container字段中添加对容器元数据的跟踪。将服务器返回的原始错误文档添加到
MongoServerError文档的errorResponse字段。弃用驱动程序未使用的
CloseOptions接口。
要了解有关此版本的更多信息,请参阅 GitHub 上的 v6.5.0 版本亮点。
6.4 中的新功能
Node.js 驱动程序 v6.4 版本包括以下功能:
当存在多个
mongos实例时,读写重试尝试将使用不同的服务器。在客户端级别缓存 AWS 凭据,避免每次身份验证时都重新获取。
升级为使用BSON 6.4.0。有关BSON新功能的详细信息,请参阅BSON 6.3.0 和 BSON 6.4.0 的发布说明。
重试导致
ExceededTimeLimit错误的读操作。修复了
saslContinue命令的 base64 填充,以允许进行 mongosh 身份验证。类型
countDocuments使用Filter<Schema>而不是Document,这支持自动完成并有助于防止下游的键入问题。修复了
bulkWrite命令的$addToSet选项中的类型错误。驱动程序会跳过您从Document或any扩展类型或使用任何类型属性的$addToSet验证。修复
ServerHeartbeatSucceeded和ServerHeartbeatFailed事件检测信号持续时间,使其不包括创建套接字的时间。适当地从游标转换流中发出错误,而不是消除错误。
在提供用户名和密码时,使 AWS 会话令牌成为可选,并允许 AWS SDK 处理身份验证请求。
要了解有关此版本的更多信息,请参阅 GitHub 上的 v6.4.0 版本亮点。
6.3 中的新增功能
Node.js 驱动程序 v6.3 版本包含以下功能:
添加
serverMonitoringMode客户端选项,以控制拓扑中节点之间的监控连接行为。此选项的值可为auto(默认值)、poll或stream。要了解更多信息,请参阅连接选项指南中该选项的相应条目。您可以在
serverMonitoringMode实例中设置MongoClientOptions选项,也可以将其设置为连接字符串选项。以下示例展示了如何创建一个客户端,并将选项设置为stream:new MongoClient('<connection string>', { serverMonitoringMode: 'stream' }); 修复了设置
serverApi客户端选项时的连接泄漏问题。弃用
contentType和aliasesGridFS 选项。要存储文件的内容类型和别名,请将contentType和aliases字段添加到metadata文档中。
要了解有关此版本的更多信息,请参阅 v6.3.0 版本亮点。
6.2 中的新增功能
Node.js 驱动程序 v6.2 版本包括以下功能:
将
bson包版本更新到 6.2.0 以包含类型的颜色可视化效果,如下图所示:![显示彩色打印的终端屏幕截图]()
如需学习;了解更多信息,请参阅BSON v6.2.0发布说明。
确保批写入错误类型的
result.insertedIds属性包含已成功插入文档的_id值。在之前的版本中,当批写入操作拒绝插入操作时,result.insertedIds属性包含所有已尝试插入的_id值。关闭在时间序列集合上运行
findOne()方法时创建的隐式会话,无论操作的结果如何。允许创建名称以
.字符开头或结尾的集合。此更改使驱动程序的数据库和集合名称校验行为与服务器的相应行为保持一致。
要了解有关此版本的更多信息,请参阅 v6.2.0 版本亮点。
6.1 中的新增功能
Node.js 驱动程序 v6.1 版本包含以下功能:
将
bson包版本更新到 6.1.0 以公开Decimal128.fromStringWithRounding()方法。要学习;了解详情,请参阅 v6.1.0 BSON发布说明。当您使用 IAM AssumeRoleWithWebIdentity 操作和
MONGODB-AWS身份验证进行身份验证时,检测区域设置的环境变量。要指示驱动程序使用区域选项,必须设立以下两个环境变量:AWS_STS_REGIONAL_ENDPOINTSAWS_REGION
要学习;了解如何在使用
MONGODB-AWS身份验证机制时设立地区设置,请参阅身份验证机制指南的 MONGODB-AWS 部分中的 Web Identity Token标签页。修复了因递归调用
ChangeStream类型的next()方法而导致的内存泄漏问题。
要了解有关此版本的更多信息,请参阅 v6.1.0 版本亮点。
6.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字段只包含以下字段,这些字段是非默认池选项:maxConnectingmaxPoolSizeminPoolSizemaxIdleTimeMSwaitQueueTimeoutMS
在您调用
MongoClient.connect()方法而不是创建MongoClient实例时,该驱动程序异步读取在tlsCAFile和tlsCertificateKeyFile连接选项中设置的文件。删除了
keepAlive和keepAliveInitialDelay连接选项。keepAlive的值永久设置为true,而keepAliveInitialDelay的值设置为 300000 毫秒(300 秒)。要了解如何在系统级别设置 keepalive 设置,请参阅服务器手册中“TCP keepalive 时间是否影响 MongoDB 部署?”的常见问题解答条目。
删除了
Db.command()方法的以下选项:willRetryWriteomitReadPreferencewriteConcernexplainreadConcerncollationmaxTimeMScommentretryWritesdbNameauthdbnoResponse
尽管您无法将这些选项传递给
Db.command()方法,但您仍然可以在命令文档中设置这些选项。要了解更多信息,请参阅运行命令指南中的命令选项部分。
要了解有关此版本的更多信息,请参阅 v6.0.0 版本亮点。
