新增功能
在此页面上
了解以下版本中的新功能:
6.10 中的新功能
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 发布说明 。
6.9 中的新功能
对MongoDB Server 3.6的支持已弃用,并将在未来的驾驶员发布中删除。
该驾驶员本身支持对游标以及
MongoClient
、ClientSession
和ChangeStream
对象进行显式资源管理。 使用兼容的 Node.js 版本时,可以使用cursor.stream()
方法和GridFSDownloadStream
类实现显式资源管理。要学习;了解如何使用显式资源管理,请参阅 v6.9.0 发布说明 在Github 上。有关显式资源管理的更多信息,请参阅 ECMAScript 显式资源管理提案 在Github 上。
如果您使用的是 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_CHAIN
OpenSSL 标志。ConnectionCheckedOutEvent
和ConnectionCheckFailedEvent
现在包含durationMS
属性。 此属性指示连接签出操作开始和结束之间经过的时间。如果您使用的是 Node.js 18或更高版本,则驾驶员会忽略
cryptoCallbacks
选项并使用C++中定义的回调,从而显着提高加密性能。 此更改可在 v 6.1.0mongodb-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
属性接受 的BSON
Binary
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 版本说明。
6.8 中的新功能
Node.js 驱动程序 v6.8 版本包括以下功能:
修复本地KMS提供商在运行时接受
BSON Binary
实例,但Typescript编译器仅允许Buffer
和string
类型的值的错误。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 版本说明。
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
和aliases
GridFS 选项。要存储文件的内容类型和别名,请将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 发布说明。。在使用
MONGODB-AWS
身份验证机制进行身份验证时,检测区域设置的环境变量。要指示该驱动程序使用区域选项,您必须同时设置以下两个环境变量:AWS_STS_REGIONAL_ENDPOINTS
AWS_REGION
修复了因递归调用
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
字段只包含以下字段,这些字段是非默认池选项:maxConnecting
maxPoolSize
minPoolSize
maxIdleTimeMS
waitQueueTimeoutMS
在您调用
MongoClient.connect()
方法而不是创建MongoClient
实例时,该驱动程序异步读取在tlsCAFile
和tlsCertificateKeyFile
连接选项中设置的文件。删除了
keepAlive
和keepAliveInitialDelay
连接选项。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 版本亮点。