您可以通过云数据库MongoDB控制台或调用UpgradeDBInstanceEngineVersion接口升级数据库大版本。升级前,建议您了解不同系统架构的云数据库MongoDB实例支持的数据库大版本、大版本升级的支持情况和升级前后大版本间的变更内容,帮助您判断是否需要升级和需要升级至哪个大版本。

支持的数据库大版本

不同系统架构的云数据库MongoDB实例支持的数据库大版本如下:
系统架构 MongoDB 5.0 MongoDB 4.4 MongoDB 4.2 MongoDB 4.0 MongoDB 3.4 MongoDB 3.2 MongoDB 3.0
单节点架构 不支持 不支持 不支持 支持 支持 已下线,具体请参见【通知】11月22日云数据库MongoDB版3.2版本下线 已下线。
副本集架构 支持 支持 支持 支持 支持
分片集群架构 支持 支持 支持 支持 支持
Serverless架构 不支持 不支持 支持 不支持 不支持

可以升级到的数据库大版本

不同系统架构的云数据库MongoDB实例可以升级到的数据库大版本如下:
系统架构 实例支持的版本 可以升级到的数据库大版本
单节点架构 MongoDB 3.4和MongoDB 4.0 不支持升级数据库大版本
副本集架构 MongoDB 5.0 不支持升级数据库大版本
MongoDB 4.4 MongoDB 5.0
MongoDB 4.2 不支持升级数据库大版本
MongoDB 4.0 MongoDB 4.2
MongoDB 3.4 MongoDB 4.0和MongoDB 4.2
分片集群架构 MongoDB 5.0 不支持升级数据库大版本
MongoDB 4.4 MongoDB 5.0
MongoDB 4.2 不支持升级数据库大版本
MongoDB 4.0 MongoDB 4.2
MongoDB 3.4 MongoDB 4.0和MongoDB 4.2
Serverless架构 MongoDB 4.2 不支持升级数据库大版本

大版本变更说明

以下为相邻大版本间升级(低版本升级至高版本,例如MongoDB 4.0升级至MongoDB 4.2)时的变更说明。如果您需要跨版本升级,则变更说明为低版本到高版本间所有大版本的变更说明。
说明
  • 不同系统架构的云数据库MongoDB实例可以升级到的数据库大版本请参见可以升级到的数据库大版本
  • 您可以在实例运行期间手动升级数据库大版本,但大版本升级后不支持降级。升级方法请参见升级数据库版本
  • 在MongoDB 3.4和MongoDB 4.0间,官方MongoDB还支持MongoDB 3.6,所以在将MongoDB 3.0、MongoDB 3.2或MongoDB 3.4升级至MongoDB 4.0或MongoDB 4.0以上大版本的过程中,变更内容包括升级至MongoDB 3.6的内容。
  • 变更说明仅属于MongoDB内核上的变动,不包含不同系统架构的云数据库MongoDB实例功能上的差异。
数据库大版本 变更说明
MongoDB 5.0
  • Read Concern的默认级别为local,5.0 之前的版本,Secondary节点的默认值是available
  • write concern的默认值由“1”修改为“majority”。
  • 不再支持db.collection.ensureIndex(),您可以使用db.collection.createIndex()代替。
  • 从4.4.9 SERVER-53154开始,对saslStart以及saslContinue命令的参数进行严格校验,无法兼容gopkg/mgo.v2saslContinue只需要conversationIdpayload参数,而mgo提供了一个多余的参数 mechanism

更多信息,请参见Compatibility Changes in MongoDB 5.0

MongoDB 4.4
  • compact不再支持force选项。
  • 不再支持geoSearch
    说明 geoSearch在MongoDB 5.0被删除。
  • 支持在主库和备库上的同时进行索引创建操作,以减少索引创建带来的主备延迟。即使在索引创建过程中,也可以保证备库访问到最新的数据。不需要用户先分别在主库和备库轮询创建索引,然后再切换。

更多信息,请参见Compatibility Changes in MongoDB 4.4

MongoDB 4.2
  • 不再支持geoNear,您可以使用 $geoNear (aggregation)代替。
  • 不再支持repairDatabase
  • 不再支持cloneCollection,您可以使用mongoexportmongoimport代替。
    说明 cloneCollection在MongoDB 4.2被删除。
  • 不再支持mapReduce
  • 不能通过db.collection.dropIndex("*")的方式删除所有非_id索引,您可以使用db.collection.dropIndexes()代替。
  • 统一前后台索引创建机制,使用了只在索引创建的开始和结束阶段对集合加独占锁的加锁机制。
    说明
    • 在加独占锁时间段内不支持无锁,防止元数据被更改。
    • 弃用db.collection.createIndex(keys, options, commitQuorum)中的可选参数options的值background,如果在命令中为该参数指定了具体的值,MongoDB将忽略该选项。
  • count中的选项名称进行更严格的验证。如果您指定未知的选项名称,则在MongoDB 4.2执行该命令会出错。
  • cursor.mincursor.max需要指定索引。
  • 官方MongoDB 4.2+兼容驱动默认启用Retryable Writes

更多信息,请参见Compatibility Changes in MongoDB 4.2

MongoDB 4.0
  • reIndex会加一个全局写锁,直到索引重建完成。
  • 不再支持copydbclone
    说明 copydbclone在MongoDB 4.2被删除。

更多信息,请参见Compatibility Changes in MongoDB 4.0

MongoDB 3.6 在MongoDB 3.4和MongoDB 4.0间,官方MongoDB还支持MongoDB 3.6,所以在将MongoDB 3.6以下的大版本升级至MongoDB 4.0或MongoDB 4.0以上大版本的过程中,变更内容还需包括如下内容:
  • aggregate不再支持返回单个文档,而是返回cursor,用户可以通过cursor指定batch size
  • $type: "array"能直接检测到数组类型的文档(能够同时检测到示例中_id为1和2的文档),之前只能检测到嵌套型的数组类型文档(仅能检测到示例中_id为2的文档)。$type的更多信息,请参见$type
    示例:
    {"_id":1,"a":[1,2,3]}
    {"_id":2,"a":[1,2,[3,4]]}
  • 数组排序结果,发生以下变更:
    • find中,新增可选项sort,用于提供排序结果明细。
    • $sort (aggregation)中,$sort stage的内存限制为100 MB,如果超出该限制,$sort将产生错误。
  • 在进行更新操作时,如果需要同时更新多个字段,新字段将按照字典顺序添加。具体请参见$set
  • ISODate(日期类型)的值转换成字符串返回;支持毫秒(ms),且在末尾添加Z。
  • 不再支持snapshot查询选项。
MongoDB 3.4
  • 不再支持group,您可以使用aggregate中的$group (aggregation)代替。
    说明 group在MongoDB 4.2被删除。
  • 使用$in表达式进行匹配+ upsert: trueupdate
    示例:
    db.c.drop()
    db.c.update({a:{$in:[1]}},{$addToSet:{a:2}},{upsert:true}) //在MongoDB 3.4插入会失败,MongoDB 3.4之前的大版本可成功插入一条记录。
    db.c.update({a:{$elemMatch:{$in:[2]}}},{$addToSet:{a:2}},{upsert:true}) //在MongoDB 3.4可成功插入一条记录。

更多信息,请参见Compatibility Changes in MongoDB 3.4

相关API

接口 说明
UpgradeDBInstanceEngineVersion 升级云数据库MongoDB实例的数据库大版本。