Overview
通过本页面,您可以了解如何将驱动程序升级到新版本。本页面还介绍您必须对应用程序进行的更改,以升级驱动程序而不丢失功能(如果适用)。
如何升级
升级前,请执行以下操作:
确保新的驱动程序版本与应用程序连接到的MongoDB Server版本以及应用程序运行所在的 Node.js 版本兼容。有关此信息,请参阅客户端库兼容性表页面。
要解决应用程序当前使用的驱动程序版本与计划升级版本之间发生的任何破坏性变更,请参阅本指南的破坏性变更部分。要了解有关 MongoDB Server 版本兼容性更改的更多信息,请参阅服务器版本兼容性更改部分。
提示
通过使用稳定的 API,您可以最大限度减少升级驱动程序版本时必须对应用程序进行的更改量。
若要升级驱动程序版本,请在应用程序目录中运行以下命令:
npm install mongodb@7.2
要升级到不同版本的驱动程序,请将 @ 符号后面的信息替换为您的首选版本号。有关 npm install 命令的更多信息,请参阅 npm-install npm 文档。
重大更改
破坏性更改是对特定版本驱动程序中的约定或行为的修改,可能会阻止您的应用程序按预期工作。
本部分中的破坏性变更按引入它们的主要版本进行分类。升级驱动程序版本时,请解决当前版本和计划升级版本之间的所有破坏性变更。例如,如果要将驱动程序从 v3.x 升级到 v5.x,请解决 v4.0和 v5.0 下列出的所有破坏性变更。
版本 7.0破坏性变更
将以下驱动程序依赖项和对等依赖项更新为 v7.0.0:
bson@7.0.0mongodb-connection-string-url@7.0.0mongodb-client-encryption@7.0.0@mongodb-js/kerberos@7.0.0@mongodb-js/zstd@7.0.0
为 AWS身份验证添加了以下破坏性变更 (breaking change):
需要
@aws-sdk/credential-providers包进行MONGODB-AWS身份验证。当您向
AWS_CREDENTIAL_PROVIDER身份验证属性提供自定义 AWS 凭证提供商时,该提供商的优先级高于任何其他 AWS 身份验证方法。凭证获取完全由现在所需的 AWS SDK 处理。现在,必须按以下格式指定用于 AWS身份验证的所有客户端URI:
import { MongoClient } from 'mongodb'; const client = new MongoClient('mongodb<+srv>://<host>:<port>/?authMechanism=MONGODB-AWS'); 上一个根据
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY属性直接向连接字符串提供 URI 编码凭证的方法不再适用。
要学习;了解有关
MONGODB-AWS身份验证的更多信息,请参阅 AWS IAM 身份验证机制 指南。允许您将任何
$changeStream阶段选项传递给collection.watch()。如果选项对于管道的$changeStream阶段无效,服务器将返回错误。删除
1000的游标默认batchSize。您现在必须在游标显式启用batchSize。将以下包的对等互连矩阵更新到以下允许的范围:
@aws-sdk/credential-providers: ^3.806.0@mongodb-js/zstd: ^2.0.0gcp-metadata: ^7.0.1socks: ^2.8.6
有关完整的依赖项兼容性表,请参阅驱动程序兼容性表页面上的 Node.js 组件兼容性 表。
删除对游标和变更流上的
transform函数的支持。相反,您可以使用ReadableStream.map():// before const stream = cursor.stream({ transform: JSON.stringify }); // after const stream = cursor.stream().map(JSON.stringify); 删除对执行
MongoClient.close()时endSessions使用的noResponse选项的支持。使用未确认的写入来避免等待服务器的响应。删除了不支持的
MONGODB-CR身份验证机制。从公共API中删除以下内部
ClientMetadata属性:MongoClient.options.additionalDriverInfo; MongoClient.options.metadata; MongoClient.options.extendedMetadata; MongoOptions.additionalDriverInfo; MongoOptions.metadata; MongoOptions.extendedMetadata; ConnectionOptions.metadata; ConnectionOptions.extendedMetadata; 删除
beta命名空间空间,并将所有显式资源管理配置移到每个一次性资源上,例如MongoClient或ClientSession。对于设立了
writeConcern和explain选项的聚合,是服务器(而不是驱动程序)引发错误。作为新的
mongodb-client-encryptionv7更新的一部分,确保加密期间抛出的所有错误都是MongoError的子类。对于加密连接错误,抛出
MongoRuntimeError而不是MissingDependencyError。对于 TypeScript,如果指定的文件名与文件的默认名称不匹配,则会引发错误,从而改进
AutoEncryptionOptions中文件路径的输入。将
PoolRequstedRetry错误标签重命名为PoolRequestedRetry以修复错别字。删除对 节点16 和 节点18 的支持。
删除以下已弃用的类型、类和选项:
GridFSFile.contentType; GridFSFile.aliases; GridFSBucketWriteStreamOptions.contentType; GridFSBucketWriteStreamOptions.aliases; CloseOptions; ResumeOptions; MongoClientOptions.useNewUrlParser; MongoClientOptions.useUnifiedTopology; CreateCollectionOptions.autoIndexId; FindOptions<TSchema>; // now no generic type ClientMetadataOptions; FindOneOptions.batchSize; FindOneOptions.limit; FindOneOptions.noCursorTimeout; ReadPreference.minWireVersion; ServerCapabilities; CommandOperationOptions.retryWrites; // is a global option on the MongoClient ClientSession.transaction; Transaction; CancellationToken;
版本 6.0破坏性变更
Node.js 驱动程序 6.0 版本需要 Node.js v16.20.1 或更高版本。
驱动程序删除了对
addUser()辅助命令的支持。 请使用 createUser MongoDB Shell 命令。驱动程序不再支持
collStats操作。请改用 $collStats 聚合操作符。驱动程序删除所有已弃用的以
ssl为前缀的选项以及MongoClientOptions类型中的tlsCertificateFile选项。相反,请创建一个SecureContext对象或在MongoClientOptions实例中设置带tls前缀的选项。在您调用
MongoClient.connect()方法(而不是创建MongoClient实例)时,该驱动程序读取tlsCAFile和tlsCertificateKeyFile连接选项中设置的文件。驱动程序删除
keepAlive和keepAliveInitialDelay连接选项。keepAlive的值永久设置为true,而keepAliveInitialDelay的值设置为 300000 毫秒(300 秒)。Db.command()方法只接受与特定命令无关的选项。如需了解有关这些选项的更多信息,请参阅“运行命令”指南中的“命令选项”部分。如果您添加
mongodb-client-encryption作为依赖项,则主版本号必须与 Node.js 驱动程序的版本号匹配。例如,Node.js 驱动程序 v6.xx 需要mongodb-client-encryptionv6.xx。自动加密方法现在位于 Node.js 驱动程序中。您必须从驱动程序而不是从
mongodb-client-encryption导入这些方法。删除了接受 12 个字符字符串的
ObjectId构造函数。修改了
abortTransaction()和commitTransaction()方法,使其返回null而不是原始命令结果。删除了接受除
true或false之外的值作为布尔值的连接选项帮助程序。您必须在连接字符串中或向 MongoClient 构造函数提供true或false值。删除了接受字符串的
BinaryBSON 类型构造函数。Binary.write()方法不再接受要写入二进制 BSON 对象的字符串。ClientEncryption API 返回 promise 而不是 callback。
启用 SOCKS5 代理支持的
socks软件包是对等可选的依赖项。您必须安装该软件包才能在应用程序中启用 SOCKS5。要了解更多信息,请参阅启用 SOCKS5 代理支持。如果在客户端上启动会话,然后将该会话传递给其他客户端,则当在会话中执行任何操作时,驱动程序都会引发错误。
复合操作方法的
includeResultMetadata选项默认为false。有关更多信息,请参阅“复合操作”指南的内置方法部分。将可选的
kerberos依赖项最低版本提高到 2.0.1,并删除了对版本 1.x 的支持。将可选的
zstd依赖最低版本提高到 1.1.0。
版本 5.0 破坏性变更 (breaking change)
该驱动程序不再与 Node.js v12 或更早版本兼容。如果您想使用此版本的驱动程序,必须使用 Node.js v14.20.1 或更高版本。
该驱动程序删除对回调的支持,转而支持基于 Promise 的 API。以下列表为回调用户提供了一些策略以采用该版本:
迁移至基于 Promise 的 API(推荐)
使用基于 promise 的 API 和
util.callbackify添加
mongodb-legacy以继续使用 callback
有关这些策略的更多信息,请参阅 v5.0 变更日志 。
驱动程序删除了对
Collection.insert()、Collection.update()和Collection.remove()辅助方法的支持。 以下列表说明了如何替换已删除方法的功能:从
Collection.insert()迁移到insertOne()或insertMany()从
Collection.update()迁移到updateOne()或updateMany()从
Collection.remove()迁移到deleteOne()或deleteMany()
默认情况下,驱动程序不再包含 AWS SDK 模块。
该驱动程序不再自动导入
bson-ext包。该驱动程序删除了对自定义
Promise库的支持。该驱动程序不再支持MongoClient的promiseLibrary选项以及允许指定自定义Promise库的Promise.set导出。该驱动程序删除了对
Collection.mapReduce()辅助程序的支持。BulkWriteResult类型不再具有可公开枚举的result属性。以下类型、选项和方法已被删除:
BulkResult.lastOp()方法opTime属性,属于BulkResultBulkWriteOptions.keepGoing选项WriteConcernError.err()方法AddUserOptions.digestPassword选项Kerberos
gssapiCanonicalizeHostNameoptionslaveOk选项和方法已被删除,取而代之的是secondaryOkObjectID键入已删除,取而代之的是ObjectIdAsyncIterator界面已被删除,取而代之的是AsyncGenerator
版本 4.0 重大更改
该驱动程序不再与 Node.js v12.8 或更早版本兼容。如果您想使用此版本的驱动程序,必须使用 Node.js v12.9 或更高版本。
Cursor类型不再直接扩展Readable。在将
ChangeStream实例用作EventEmitter后,您无法将其用作迭代器。您也不能反过来操作 - 在将EventEmitter实例用作ChangeStream后,将其用作迭代器。以下方法不再接受 回调 参数:
Collection.find()Collection.aggregate()Db.aggregate()
maxPoolSize连接选项的默认值现在为100。驱动程序不再支持
gssapiServiceNameKerberos 选项。请改用authMechanismProperties.SERVICE_NAME。对于布尔选项,驱动程序不再接受非布尔类型,例如
0或1。db.collection类型不再接受 回调。Db类型不再是EventEmitter。您可以监听直接来自MongoClient实例的任何事件。该驱动程序删除了对
Collection.group()辅助程序的支持。驱动程序不再包含已弃用的
GridStoreAPI。
有关这些更改的更多信息,请参阅 v4.0 变更日志。
服务器版本兼容性更改
服务器版本兼容性更改是对驱动程序的修改,停止对一组 MongoDB 服务器版本的支持。
该驱动程序在 MongoDB Server 版本的生命周期结束 (EOL) 后将停止支持。
要了解有关 MongoDB 支持 EOL 产品的更多信息,请参阅旧版支持政策。
4.2 版服务器版本支持更改
- v4.2 驱动程序不再支持 MongoDB Server v3.4 及更早版本。如要使用 v4.2 驱动程序,您的 MongoDB Server 必须是 v3.6 或更新版本。如要了解如何升级 MongoDB Server 部署,请参阅 MongoDB Server 手册中的发行说明。