了解以下版本中的新功能:
6.9 中的新功能
对MongoDB Server 3.6的支持已弃用,并将在未来的驾驶员发布中删除。
该驾驶员本身支持对游标以及
MongoClient、ClientSession和ChangeStream对象进行显式资源管理。 使用兼容的 Node.js 版本时,可以使用cursor.stream()方法和GridFSDownloadStream类实现显式资源管理。要学习;了解如何使用显式资源管理,请参阅Github上的 v6.9.0 发布说明 。有关显式资源管理的更多信息,请参阅Github上的 ECMAScript 显式资源管理提案。
如果您使用的是 Node.js 18.13或更高版本,则可以将
autoSelectFamily和autoSelectFamilyTimeout选项传递给MongoClient构造函数。 当autoSelectFamily选项为true时,驾驶员会自动在 IPv 4或 IPv 6连接之间进行选择。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++中定义的回调,从而显着提高加密性能。 此更改可在 v 6.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选项,该选项在 Node.js驾驶员v 6.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 版本亮点。
