升级驱动版本
概述
在本页,您可以了解如何升级您的驱动程序到新版本。此页面还包括您必须对应用程序进行的更改,以在适用的情况下升级驱动程序而不丢失功能。
如何升级
在升级之前,请执行以下操作
确保新的驱动程序版本与您的应用程序连接的 MongoDB 服务器版本以及您的应用程序运行的 Node.js 版本兼容。请参阅兼容性页面以获取此信息。
处理驱动程序当前版本与您计划升级的版本之间的任何破坏性更改破坏性更改部分。有关 MongoDB 服务器发布兼容性更改的更多信息,请参阅服务器发布兼容性更改部分。
提示
您可以通过使用稳定 API来最小化在升级驱动程序版本时必须对应用程序进行的更改数量。
要升级驱动程序版本,请在应用程序目录中运行以下命令
npm install mongodb@6.11
要升级到驱动程序的不同版本,请替换@符号与您喜欢的版本号。有关npm install命令的更多信息,请参阅npm-install npm 文档。
重大变更
重大变更是指在特定版本的驱动程序中,对约定或行为的修改,这可能会阻止您的应用程序按预期工作。
本节中的重大变更按引入它们的重大版本发布进行分类。在升级驱动程序版本时,解决您当前版本和计划升级版本之间的所有重大变更。例如,如果您正在将驱动程序从v3.x升级到v5.x,则解决v4.0和v5.0下列出的所有重大变更。
6.0版本重大变更
Node.js驱动程序的6.0版本需要Node.js v16.20.1或更高版本。
驱动程序移除了对
addUser()辅助命令的支持。请使用createUser MongoDB Shell命令代替。驱动程序移除了对
collStats操作的支持。请使用 $collStats 聚合操作符代替。驱动程序移除了所有以
ssl为前缀的选项以及MongoClientOptions类型中的tlsCertificateFile选项。请在您的MongoClientOptions实例中创建一个SecureContext对象或设置以tls为前缀的选项。当您调用
MongoClient.connect()方法时,驱动程序将读取tlsCAFile和tlsCertificateKeyFile连接选项中设置的文件,而不是在创建MongoClient实例时。驱动程序移除了
keepAlive和keepAliveInitialDelay连接选项。将keepAlive的值永久设置为true,将keepAliveInitialDelay的值设置为 300000 毫秒(300 秒)。Db.command()方法仅接受与特定命令无关的选项。有关这些选项的更多信息,请参阅运行命令指南中的 命令选项 部分。如果您将
mongodb-client-encryption添加为依赖项,则主版本号必须与 Node.js 驱动程序相匹配。例如,Node.js 驱动程序 v6.x.x 需要mongodb-client-encryptionv6.x.x。自动加密方法现在位于 Node.js 驱动程序中。您必须从驱动程序而不是从
mongodb-client-encryption导入这些方法。移除了接受 12 位字符串的
ObjectId构造函数。修改了
abortTransaction()和commitTransaction()方法,使其返回null而不是原始命令结果。移除了接受除了
true或false以外的值作为布尔值的连接选项辅助函数。您必须在连接字符串或 MongoClient 构造函数中提供true或false值。移除了接受字符串的
BinaryBSON 类型构造函数。Binary.write()方法不再接受字符串以写入二进制 BSON 对象。ClientEncryption API 现在返回承诺而不是回调。
启用 SOCKS5 代理支持的
socks包是一个可选的依赖项。您必须安装该包才能在您的应用程序中启用 SOCKS5。有关更多信息,请参阅 启用 SOCKS5 代理支持。如果在客户端启动会话,然后将该会话传递给不同的客户端,当您在会话中执行任何操作时,驱动程序将抛出错误。
复合操作方法的
includeResultMetadata选项默认为false。有关更多信息,请参阅复合操作指南中的 内置方法 部分。方法
withSession()返回提供函数返回的值。在之前的驱动程序版本中,此方法返回undefined。方法withTransaction()返回回调返回的值。在之前的驱动程序版本中,此方法返回服务器命令响应,具体取决于驱动程序连接到的 MongoDB 服务器版本或类型。有关事务的更多信息,请参阅执行事务的使用示例和事务指南。将可选依赖项
kerberos的最低版本提升到 2.0.1,并移除了对 1.x 版本的支持。将可选依赖项
zstd的最低版本提升到 1.1.0。
5.0 版本的重大变更
驱动程序不再兼容 Node.js v12 或更早版本。如果您想使用此版本的驱动程序,您必须使用 Node.js v14.20.1 或更高版本。
驱动程序移除了对回调的支持,转而采用基于 Promise 的 API。以下列表提供了一些策略,以帮助回调用户采用此版本:
迁移到基于 Promise 的 API(推荐)
使用基于 Promise 的 API 和
util.callbackify添加
mongodb-legacy以继续使用回调
有关这些策略的更多信息,请参阅5.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()方法BulkResult的opTime属性BulkWriteOptions.keepGoing选项WriteConcernError.err()方法AddUserOptions.digestPassword选项Kerberos
gssapiCanonicalizeHostName选项移除了
slaveOk选项和方法,改用secondaryOk移除了
ObjectID类型,改用ObjectId移除了
AsyncIterator接口,改用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。驱动程序不再支持 Kerberos 选项
gssapiServiceName。请使用authMechanismProperties.SERVICE_NAME代替。驱动程序不再接受非布尔类型,例如
0或1,作为布尔选项。db.collection类型不再接受回调函数。Db类型不再是一个EventEmitter。您可以直接从MongoClient实例监听任何事件。驱动程序移除了对
Collection.group()辅助函数的支持。驱动程序不再包含已弃用的
GridStoreAPI。
有关这些更改的更多信息,请参阅 版本4.0的更改日志。
服务器版本兼容性更改
服务器版本兼容性更改是指对驱动程序的修改,该修改终止了对一组 MongoDB 服务器版本的支持。
当 MongoDB 服务器版本达到生命周期的结束 (EOL) 时,驱动程序将停止支持该版本。
有关 EOL 产品的 MongoDB 支持的更多信息,请参阅 遗留支持策略。
版本 4.2 服务器发布支持变更
v4.2 驱动器不再支持 MongoDB 服务器 v3.4 及更早版本。要使用 v4.2 驱动器,您的 MongoDB 服务器必须为 v3.6 或更高版本。有关如何升级 MongoDB 服务器部署的说明,请参阅 MongoDB 服务器手册中的发行说明。