MongoDB数据库大版本升级说明

云数据库MongoDB支持升级数据库大版本。升级前,建议您了解不同产品架构、不同版本的实例支持升级到的数据库大版本以及不同数据库大版本的兼容性变更说明。

支持升级的数据库大版本

  • 云数据库 MongoDB 版控制台可以直接升级数据库大版本,但不同产品架构、不同版本的实例支持升级的版本不同,具体情况如下:

    产品架构

    规格类型

    实例的数据库大版本

    可升级到的数据库大版本

    单节点架构

    通用型云盘版

    MongoDB 4.0

    暂无更高的数据库大版本可升级。

    通用型云盘版

    MongoDB 3.4

    不支持升级数据库大版本。

    如果您需要升级数据库大版本,可以通过创建新实例,使用新实例替换旧实例的方法实现。如何创建单节点实例,请参见创建单节点实例

    副本集架构

    独享型云盘版

    MongoDB 7.0

    暂无更高的数据库大版本可升级。

    MongoDB 6.0

    MongoDB 7.0

    MongoDB 5.0

    MongoDB 6.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 3.2

    MongoDB 3.0

    分片集群架构

    独享型云盘版

    MongoDB 7.0

    暂无更高的数据库大版本可升级。

    MongoDB 6.0

    MongoDB 7.0

    MongoDB 5.0

    MongoDB 6.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 3.2

    MongoDB 3.0

    Serverless架构

    MongoDB 4.2

    暂无更高的数据库大版本可升级。

  • 如果您需要跨产品架构或跨存储类型升级实例大版本,可以先创建目标高版本实例,然后通过DTS将源实例迁移至高版本的新实例中。创建实例的方法,请参见创建实例

    迁移数据的方法如下:

大版本兼容性变更说明

不同数据库大版本的兼容性变更说明如下:

重要
  • 升级数据库大版本时,实例的状态需为运行中。如何升级数据库大版本,请参见升级数据库版本

  • 升级数据库大版本后不支持降级。

  • MongoDB 4.0及以上大版本已兼容MongoDB 3.6。如果您需要使用MongoDB 3.6大版本的功能,请升级到MongoDB 4.0及以上大版本。

  • 兼容性变更说明仅包含云数据库MongoDB内核的变更,不包含MongoDB实例管控功能的变更。

数据库大版本

兼容性变更说明

MongoDB 7.0

  • 将大版本升级至MongoDB 7.0场景,目前不存在兼容性问题。

  • 如果需要将MongoDB 7.0版本降级至其他大版本,则需要先移除7.0版本支持的功能,例如:

    • 删除所有柱状索引(columnar indexes)。

    • 注销通过setClusterParameter命令设置的集群参数。具体信息,请参见setClusterParameter

    • 删除所有使用encryptedFields选项创建的集合。

    • 删除所有的复合通配符索引(Compound wildcard indexes)。

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

MongoDB 6.0

  • 如果聚合管道里使用的内存超过了100 MB,默认会写入数据到磁盘的临时文件中。若要更改此默认行为,请修改全局参数allowDiskUseByDefaultfalse

    6.0之前的版本需要显式指定{ allowDiskUse: true }参数,才能写入数据到磁盘的临时文件中。

  • 通过dropIndexes删除索引时,如果使用通配符*,不会删除_id索引,也不会删除分片键索引,更多信息,请参见dropIndexes

  • 不再支持Mongo Shell工具,请使用mongosh工具替代。

  • 不再支持$explain$hint$max$maxTimeMS等操作符。

  • TTL索引expireAfterSeconds被设置为NaN时,会被认为设置为0,可能会立马淘汰过期文档。

  • 不再支持SCRAM-SHA-1认证方法。

  • 不再支持reIndex命令以及相对应的reIndex()方法。

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

MongoDB 5.0

  • Secondary节点(从节点)的Read Concern级别从available变更为local,更多信息,请参见Read Concern

  • Write Concern的默认值由1变更为majority

  • 不再支持db.collection.ensureIndex(),请使用db.collection.createIndex()替代。

  • saslStart以及saslContinue命令的参数进行严格校验,无法兼容mgosaslContinue只需要conversationIdpayload参数,而mgo提供了一个多余的参数 mechanism,更多信息,请参见mgo

  • 删除geoSearch

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

MongoDB 4.4

  • compact不再支持force选项,更多信息,请参见compact

  • 不再支持geoSearch,更多信息,请参见geoSearch

  • 支持在主备数据库上同时创建索引,以减少索引创建带来的主备延迟。即使在索引创建过程中,也可以保证备库访问到最新的数据。

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

MongoDB 4.2

  • 不再支持geoNear,请使用$geoNear (aggregation)替代,更多信息,请参见$geoNear (aggregation)

  • 不再支持repairDatabase

  • 不再支持并删除cloneCollection,请使用mongoexportmongoimport替代,更多信息,请参见mongoexportmongoimport

  • 不再支持afterClusterTime,更多信息,请参见afterClusterTime

  • 开源MongoDB 4.2+兼容驱动默认启用Retryable Writes,更多信息,请参见Retryable Writes

  • 删除groupcopydbclone

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

MongoDB 4.0

  • reIndex添加一个全局写锁,直到索引重建完成,更多信息,请参见reIndex

  • 不再支持copydbclone

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

MongoDB 3.6

  • aggregate不再支持返回单个文档,而是返回cursor。用户可以通过cursor指定batch的规格。aggregate的更多信息,请参见aggregate

  • $type: "array"能直接检测到数组类型的文档,之前只能检测到嵌套型的数组类型文档。$type的更多信息,请参见$type

  • 数组排序结果,发生以下变更:

    • find中新增可选项sort,用于提供排序结果明细。find的更多信息,请参见find

    • $sort(aggregation)$sort stage的内存限制为100 MB,更多信息,请参见$sort (aggregation)

  • 在进行更新操作时,如果需要同时更新多个字段,新字段将按照字典顺序添加,更多信息,请参见$set

  • 不再支持snapshot查询选项。

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

MongoDB 3.4

  • 不再支持group,请使用db.collection.aggregate()或者db.collection.mapReduce()替代。更多信息,请参见db.collection.aggregate()db.collection.mapReduce()

  • 使用$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可成功插入一条记录。

    update的更多信息,请参见update

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

相关API

接口

说明

UpgradeDBInstanceEngineVersion

升级云数据库MongoDB实例的数据库大版本。