了解以下版本中的新功能:
7.7 中的新功能
Node.js 驱动程序 v7.7 版本包括以下更改:
更新以下驾驶员依赖项:
bson为 v7.3.2mongodb-connection-string-url为 v7.0.2@mongodb-js/saslprep为 v1.5.0
修复了以下问题:在应用程序重新启动之前,单次 OIDC 令牌获取失败会导致同一
MongoClient上的所有后续操作失败并显示原始错误。失败的令牌获取现在只影响触发它的操作。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。70
7.6 中的新功能
Node.js 驱动程序 v7.6 版本包括以下更改:
为In-正在使用的加密密钥管理服务 (KMS ) 请求添加HTTP 代理支持。您可以在
kmsConnectCallbackClientEncryptionOptions对象或 对象上设立AutoEncryptionOptions选项,以控制驾驶员连接到KMS托管的方式,例如通过HTTP 代理进行隧道连接。要学习;了解详情,请参阅通过HTTP代理路由KMS请求。删除对MongoDB Server v4.2 的支持。
通过引入一种策略来提高智能工作负载管理 (IWM) 的性能,该策略仅在不会降低服务器性能时才重试过载错误。
添加
baseBackoffMS客户端选项,该选项可配置驾驶员用于重试的基本回退持续时间,并更新客户端的反压回退行为以使用该持续时间。修复了将驾驶员捆绑到 ECMAScript 模块 (ESM)构建中时出现的
ReferenceError: require is not defined错误。通过将每个文档仅序列化一次而不是两次来提高
insertMany()和bulkWrite()操作的性能。对于文档数量较多和具有多个字段的文档,此改进最为明显。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。60
7.5 中的新功能
Node.js 驱动程序 v7.5 版本包括以下更改:
将 Queryable Encryption string 查询提升为全面可用,将
TextOpts替换为StringOpts,并将TextPreview算法替换为String。连接到 MongoDB Server 9.0 时,prefix、suffix和substring查询类型现在可用于加密字段的精确匹配和范围式 string 匹配。旧版预览查询类型 (prefixPreview、suffixPreview、substringPreview) 已弃用。修复了
MongoClient.close()未能正确中断副本集和分片集群中的进行中操作的问题。以前,已签出的连接会保持打开状态,直到操作完成。MongoClient.close()现在关闭所有服务器上的所有已签出连接。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。50
7.4 中的新功能
Node.js 驱动程序 v7.4 版本包括以下更改:
稳定
MongoClient、ClientSession、ChangeStream和游标上的Symbol.asyncDispose方法。这可以为自动资源清理启用await using语法。这些方法在 v6.9.0 中作为实验功能引入。将
readConcern.afterClusterTime添加到具有因果一致会话的写入操作中,与现有的读取操作行为匹配。这可以在分片集群中主节点失败时保持“读取自己的写入”保证。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。40
7.3 中的新功能
Node.js 驱动程序 v7.3 版本包括以下更改:
将最大传输协议版本提升到
29,以准备升级到 MongoDB Server v9.0。修复了一个问题,即在 Deno 等非 Node.js 运行时在运行驱动程序时 SCRAM 身份验证失败。Node.js 驱动程序现在在实现的 SCRAM 中使用明确的 UTF-8 string 转换,以恢复 Deno 和其他兼容 Web 的运行时的身份验证。
不再支持 MongoDB Server 4.2。未来的小版本将最低支持的 MongoDB Server 版本提高到 4.4。
修复了 BSON 在构建 Node.js 启动快照时未重置内部状态的 bug,这可能会导致进程共享相同的唯一 ID 状态。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。30
7.2 中的新功能
Node.js 驱动程序 v7.2 版本包括以下功能:
引入实验性
runtimeAdapters客户端选项,该选项支持注入node:os模块的自定义实现。这样,您就可以在不完全支持Node 内置模块的JavaScript环境中运行驱动程序。要学习;了解更多信息,请参阅指定连接选项指南。向
ChangeStream添加bufferedCount()方法,与游标上的现有方法一致。添加对入口连接速率限制功能的支持。您可以使用
maxAdaptiveRetries和enableOverloadRetargeting客户端选项来配置此行为。要学习;了解有关这些选项的更多信息,请参阅指定连接选项指南。将以下特定于节点的 API 替换为基于标准的等效 API:
BufferAPI:请改用标准Uint8ArrayAPI。cryptoAPI:请改用标准globalThis.cryptoAPI 。
修复了
Binary构造函数,以在构造时将subType参数规范化为数字,以匹配序列化器行为。示例,传递字符串化子类型(如'4')不会再导致内存中的sub_type属性与序列化BSON值不匹配。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。20
7.1 中的新功能
Node.js 驱动程序 v7.1 版本包括以下功能:
向驱动程序添加
MONGODB-AWS身份验证的逻辑,因此使用MONGODB-AWS身份验证时不再需要aws4包。要学习;了解有关MONGODB-AWS身份验证的更多信息,请参阅 AWS IAM 身份验证机制 指南。通过消除对
util.promisify的所有使用来提高运行时兼容性。使用显式
node:process导入而不是global.process,以便捆绑器和备用运行时可以更一致地提供和优化进程实现。将多个特定于 Node 的 API 替换为基于标准的等效 API,以减少在 Node.js 之外运行驱动程序所需的补丁数量:
process.arch现在os.arch()process.platform现在os.platform()os.endianness()现在BSON.NumberUtilsprocess.hrtime()现在performance.now()process.nextTick()现在queueMicrotask()
改进重试行为:
通过在连接失败时不再清除连接池,防止不必要的连接池流失。
为
withTransaction()重试行为添加指数退避。在服务器选择重试期间,降低过载或故障服务器的优先级。
OIDC身份验证改进:
扩展默认
OIDC ALLOWED_HOSTS列表以包含*.mongo.com。修复启用
promoteValues: false时的 OIDC 重新身份验证问题。
更正使用
$merge和$out的聚合的读取偏好(read preference)处理。弃用了
RenameCollectionOptions.new_collection,以便将来删除
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。10
7.0 中的新功能
警告
v 7.0 中的重大更改
此驱动程序版本引入了破坏性变更 (breaking change)。有关这些变更的列表,请参阅升级指南中的“版本 7.0 破坏性变更 (breaking change)”部分。
Node.js 驱动程序 v7.0 版本包括以下功能:
将最低 节点.js 版本更新到 v20.19.0。
将
bson和mongodb-connection-string-url版本更新为7.0.0。要详细学习;了解v7.0.0 更新的BSON功能,请参阅BSON v7 发布说明中概述的更改。将以下包的对等互连矩阵更新到以下允许的范围:
@aws-sdk/credential-providers: ^3.806.0@mongodb-js/zstd: ^2.0.0gcp-metadata: ^7.0.1socks: ^2.8.6
有关完整的依赖项兼容性表,请参阅驱动程序兼容性表页面上的 Node.js 组件兼容性 表。
无论是否定义凭证,都允许
connect()函数运行握手,从而提高了MongoClient.connect()跨环境的一致性。更新
MongoClient.close()以仅在拓扑结构支持会话时尝试清理会话。将
ClientEncryption.rewrapManyDataKey()方法的选项参数标记为可选,以解决 TypeScript 不匹配问题。将
socket.write调用包装在 try/catch区块中,以确保错误正确导致重试。添加了 AWS 身份验证的破坏性变更。要学习;了解有关这些重大更改的更多信息,请参阅升级指南中的版本 7.0 重大更改部分。
添加以下错误处理改进:
删除集合时,该集合会返回
false而不是抛出namespace not found错误。包含
writeConcern和explain的聚合会引发MongoServerError,而不是客户端错误。加密期间引发的所有错误都是
MongoError的子类。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..7 发布说明。00
6.21 中的新功能
Node.js 驱动程序 v6.21 版本包括以下功能:
弃用以下属性和接口,这些属性和接口将在 v7.0 中删除:
MongoCredentials.authMechanismProperties.AWS_SESSION_TOKENCommandOptions.noResponseConnectionOptions.cancellationTokenCursorStreamOptions
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。210
6.20 中的新功能
Node.js 驱动程序 v6.20 版本包括以下功能:
为未确认的
update命令提供hint选项时,不再生成错误。当连接到MongoDB Server 4.4 或更高版本时,驱动程序还支持未确认的delete和findAndModify命令的hint选项。允许您从
Collection访问权限父Db对象,并从Db访问父MongoClient对象。弃用了
ServerCapabilities类。弃用了
ReadPreference.minWireVersion属性。弃用了以下
MongoClient选项:driverInfoadditionalDriverInfometadataextendedMetadata
弃用了
CommandOperationOptions.retryWrites选项。Node.js驱动程序仅在MongoClient级别支持retryWrites选项,并且在操作级别设立该选项时已忽略该选项。但是,此选项将在未来的主要发布中删除,并且可能会在代码中产生类型或构建错误。当您使用
tryNext()方法迭代变更流事件时,更新resumeToken。上一个驱动程序版本不会更新resumeToken,导致变更流迭代期间出现不一致的行为。允许变更流在驱动程序遇到
MongoServerSelectionError后恢复。调用
MongoClient.appendMetadata()时忽略重复的元数据。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。200
6.19 中的新功能
Node.js 驱动程序 v6.19 版本包括以下功能:
添加对Queryable Encryption文本字段前缀、后缀和子字符串查询的实验性支持。您必须将
mongodb-client-encryption包升级到 v6.5.0 或更高版本才能使用此功能。重要
子字符串、前缀和后缀搜索处于预览状态,只能用于实验性工作负载。
弃用了
findOne()操作的以下选项:limitnoCursorResponsebatchSize
确保
findOne()只能从服务器接收单批处理文档,以避免不必要的killCursor命令。添加了对
MongoClient上的autoEncryption选项中的secureContext或作为“ClientEncryption ”对象的选项指定为tlsOptions:<provider>的支持。这样一来,您就可以将tlsCAFile和tlsCertificateKeyFile作为内存选项传递给MongoClientOptions.autoEncryption.tlsOptions和ClientEncryption。启用身份验证后,
MongoClient现在会从连接池检出连接以强制进行初始握手,并在连接时将其重新检入。这可以防止连接时不必要的ping命令。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。190
6.18 中的新功能
Node.js 驱动程序 v6.18 版本包括以下功能:
弃用以下成员和类型:
Transaction.options()Transaction.recoveryToken()Transaction.isPinned()Transaction.isStarting()Transaction.isActive()Transaction.isCommitted()ClientMetadataClientMetadataOptionsCancellationTokenCommandOperationOptions.noResponse
这些成员和类型将在即将发布的驱动程序主要版本中删除。
添加一个
appendMetadata()方法,可用于在构造MongoClient对象后添加握手元元数据。以下示例展示了如何使用此方法将库名称、版本和平台添加到MongoClient对象:import { MongoClient } from 'mongodb'; const client = new MongoClient(process.env.MONGODB_URI); client.appendMetadata({ name: 'my library', version: '1.0', platform: 'NodeJS' }); 将
wallTime属性添加到除ChangeStreamRefineCollectionShardKeyEvent和ChangeStreamReshardCollectionDocument之外的所有ChangeStream事件接口。此属性包含数据库操作的服务器日期和时间。为
CommandSucceededEvent和CommandFailedEvent事件添加databaseName属性。此属性包含应用程序执行命令所针对的数据库的名称。即使
minPoolSize设立为0,也会在无活动期间关闭空闲连接。这修复了一个错误:除非minPoolSize大于0,否则ConnectionPool不会清理空闲或已终止的连接。迭代游标时,驱动程序会延迟分配会话。在以前的版本中,每当创建游标时,驱动程序都会分配会话,而无论应用程序是否在游标上进行迭代。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。180
6.17 中的新功能
Node.js 驱动程序 v6.17 版本包括以下功能:
删除了对MongoDB Server 4.0 的支持。
将
bson包升级到 v6.10.4 。有关此发布的更多信息,请参阅 6104bsonGitHub 上 包的 v.. 发布说明。在构造
MongoClient时添加keepAliveInitialDelay选项。此选项默认为120000毫秒。当初始身份验证由于令牌过期错误而失败时,重试 OIDC身份验证。
为
updateOne()和replaceOne()操作添加sort选项。此选项需要MongoDB Server 8.0 或更高版本。指示
MongoClient.close()方法关闭未完成的正在使用的连接。添加用于配置 DEK缓存过期时间的
keyTimeoutMS加密选项。此选项默认为6000毫秒,并且需要mongodb-client-encryption版本 6.4 或更高版本。如果
ignoreUndefined设立为true并且所有更新均未定义,则指示更新操作生成错误。将套接字错误视为网络错误。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。170
6.16 中的新功能
Node.js 驱动程序 v6.16 版本包括以下功能:
Collection.distinct()方法现在支持可选的hint参数,您可以使用该参数指定用于命令的索引。此功能需要MongoDB Server 7.1 或更高版本。修复了在一个网络数据数据块中处理多条消息时出现的错误,该错误可能导致处理时间减慢。
修复了
FindCursor.rewind()在某些情况下引发错误的错误。弃用对MongoDB Server 4.0 的支持。在未来的次要发布中将完全删除支持。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。160
6.15 中的新功能
Node.js 驱动程序 v6.15 版本包括以下功能:
添加了对在配置身份验证或正在使用的加密时提供自定义Amazon Web Services凭证的支持。您必须按以下形式提供自定义函数签名:
() => Promise<AWS.Credentials> 您还可以从 AWS SDK 指定提供商链,从而自定义选项。要查看如何提供自定义凭证的示例,请参阅 GitHub 上的 v..6 发布说明。150
修复了一个错误,该错误导致当客户端重新进行身份验证时,为具有
AbortSignal的OIDC配置的MongoClient在游标上中止。修复了一个错误,该错误会导致在操作进入服务器选择进程之前
timeoutms过期时引发未处理的拒绝。修复了因在处理变更事件时关闭变更流而导致的错误。此错误导致潜在错误,导致拒绝表示“下一个”更改的内部承诺。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。150
6.14 中的新功能
Node.js 驱动程序 v6.14 版本包括以下功能:
添加对加密集合上的
$lookup聚合阶段的支持。您必须将mongodb-client-encryption包升级到 v6.3.0 或更高版本才能使用此功能。要学习;了解有关此功能的更多信息,请参阅“正在使用的加密”指南。使用驱动程序的
isUint8Array()方法实施来防止导入util/types包。将
@aws-sdk/credential-providers的版本兼容性恢复为 v3.188.0。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。140
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身份验证在握手包含推测性身份验证的情况下无法正确重新进行身份验证的问题。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。130
6.12 中的新功能
Node.js 驱动程序 v6.12 版本包括以下功能:
新增对
zstd压缩算法v2.0 的支持。有关zstdv2.0 的更多信息,请参阅Github上的zstd发布说明。将
bson包升级到 v6.10.1 。有关此发布的更多信息,请参阅 6101bsonGitHub 上 包的 v.. 发布说明。将主节点副本集成员标记为过时时,驱动程序会使用更具体的错误类型和消息填充
ServerDescription.error字段。驱动程序以对象模式(而不是缓冲模式)的流读取套接字数据。这可以防止在极少数情况下由于不准确的数据块而导致的消息解析错误。
如果驱动程序在连接到ocks5代理时遇到错误,则不再将socks5错误包装在
MongoNetworkError中。这可以防止驱动程序将MongoNetworkError包装在另一个MongoNetworkError中。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。120
6.11 中的新功能
Node.js 驱动程序 v6.11 版本包括以下功能:
添加了对 Node.js v22 的支持。
为Kubernetes环境添加 OIDC身份验证支持。要学习;了解有关此功能的更多信息,请参阅OIDC 身份验证机制指南。
要使用 OIDC 从Kubernetes环境中进行身份验证,请在连接字符串中将
authMechanismProperties连接选项设立为ENVIRONMENT:k8s。 连接到在 Amazon Elastic Kubernetes Service、Google Kubernetes Engine 或Azure Kubernetes Service 中运行的环境时,可以使用此功能。bson包增加了对二进制向量数据的支持。要学习;了解有关此功能的更多信息,请参阅 6100bsonGitHub 上 包的 v.. 发布说明。驱动程序在
PoolClearedEvents之后发出ConnectionClosedEvents。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。110
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。查找和聚合操作的解释选项已弃用。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。100
6.9 中的新功能
对MongoDB Server 3.6 的支持已弃用,并将在未来的驱动程序发布中删除。
如果您使用的是 节点.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触发之间的时间。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。90
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 文件的发布完整性部分中的说明进行操作。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。80
6.7 中的新功能
Node.js 驱动程序 v6.7 版本包括以下功能:
添加了连接到 MongoDB Server v 7.0 及更高版本时对
MONGODB-OIDC身份验证机制的支持。该驱动程序支持使用 Azure 机器身份验证、GCP 机器身份验证、回调身份验证和人机交互回调身份验证分面(Facet)进行身份验证。修复了将
useBigInt64标志设置为true会导致内部compareTopologyVersion函数生成错误的问题。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..6 发布说明。70
6.6 中的新功能
Node.js 驱动程序 v6.6 版本包括以下功能:
升级为使用BSON6.7.0 。有关BSON新功能的详细信息,请参阅BSON..6 50、 BSON..6 60和BSON.6 70的发布说明。 。
将
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 上的6 6v..0 版本亮点。
6.5 中的新功能
Node.js 驱动程序 v6.5 版本包括以下功能:
- 更新批量写入操作以使用
pkFactory类生成文档 ID。
警告
如果您之前指定了一个 pkFactory 实例来处理批量写入,那么文档中使用批量写入插入的 _id 字段可能会与此版本中的行为不一致。
修复了在驱动程序连接到副本集中的从节点时,通过读取操作发送到
primaryPreferred的读取偏好。修复了在套接字操作的承诺创建中引起的内存泄漏。
通过并行查询
SRV和TXT记录,减少连接到 DNS 种子列表时的首次连接延迟。在 Kubernetes 中运行客户端时,在握手文档的
client.env.container字段中添加对容器元数据的跟踪。将服务器返回的原始错误文档添加到
MongoServerError文档的errorResponse字段。弃用驱动程序未使用的
CloseOptions接口。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的6 5v..0 版本亮点。
6.4 中的新功能
Node.js 驱动程序 v6.4 版本包括以下功能:
当存在多个
mongos实例时,读写重试尝试将使用不同的服务器。在客户端级别缓存 AWS 凭据,避免每次身份验证时都重新获取。
升级为使用BSON6.4.0 。有关BSON新功能的详细信息,请参阅BSON..6 30和BSON..6 40的发布说明。
重试导致
ExceededTimeLimit错误的读操作。修复了
saslContinue命令的 base64 填充,以允许进行 mongosh 身份验证。类型
countDocuments使用Filter<Schema>而不是Document,这支持自动完成并有助于防止下游的键入问题。修复了
bulkWrite命令的$addToSet选项中的类型错误。驱动程序会跳过您从Document或any扩展类型或使用任何类型属性的$addToSet验证。修复
ServerHeartbeatSucceeded和ServerHeartbeatFailed事件检测信号持续时间,使其不包括创建套接字的时间。适当地从游标转换流中发出错误,而不是消除错误。
在提供用户名和密码时,使 AWS 会话令牌成为可选,并允许 AWS SDK 处理身份验证请求。
要学习;了解有关此发布的更多信息,请参阅 GitHub 上的6 4v..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文档中。
要学习;了解有关此发布的更多信息,请参阅 63v..0 版本亮点。
6.2 中的新增功能
Node.js 驱动程序 v6.2 版本包括以下功能:
确保批写入错误类型的
result.insertedIds属性包含已成功插入文档的_id值。在之前的版本中,当批写入操作拒绝插入操作时,result.insertedIds属性包含所有已尝试插入的_id值。关闭在时间序列集合上运行
findOne()方法时创建的隐式会话,无论操作的结果如何。允许创建名称以
.字符开头或结尾的集合。此更改使驱动程序的数据库和集合名称校验行为与服务器的相应行为保持一致。
要学习;了解有关此发布的更多信息,请参阅 62v..0 版本亮点。
6.1 中的新增功能
Node.js 驱动程序 v6.1 版本包含以下功能:
将
bson包版本更新到6.1.0 以公开Decimal128.fromStringWithRounding()方法。要学习;了解更多信息,请参阅 61v..0 bson发布说明。当您使用 IAM AssumeRoleWithWebIdentity动作和
MONGODB-AWS身份验证进行身份验证时,检测地区设置的环境变量。要指示驾驶员使用地区选项,必须设立以下两个环境变量:AWS_STS_REGIONAL_ENDPOINTSAWS_REGION
要学习;了解如何在使用
MONGODB-AWS身份验证机制时设立地区设置,请参阅 Amazon Web Services IAM 身份验证机制 指南中的 Web Identity Token 标签页。修复了因递归调用
ChangeStream类型的next()方法而导致的内存泄漏问题。
要学习;了解有关此发布的更多信息,请参阅 61v..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()方法,但仍可在命令文档中设立。要学习;了解更多信息,请参阅运行数据库命令指南中的命令选项部分。
要学习;了解有关此发布的更多信息,请参阅 60v..0 版本亮点。