侧边栏壁纸
  • 累计撰写 84 篇文章
  • 累计创建 35 个标签
  • 累计收到 1 条评论

目 录CONTENT

MongoDB大版本差异3.4到6.0

天明
2023-12-01 / 0 评论 / 0 点赞 / 56 阅读 / 13717 字 / 正在检测是否收录...

数据库版本

兼容性变更说明

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$geoNear (aggregation)

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

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

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

  • 不再支持使用db.collection.dropIndex("*")删除所有非_id索引,请使用db.collection.dropIndexes()替代。

  • 统一前后台索引创建机制,使用只在索引创建的开始和结束阶段对集合加独占锁的加锁机制。

    说明

    • 加独占锁时间段内不支持无锁,防止元数据被更改。

    • 不再支持db.collection.createIndex(keys, options, commitQuorum)中可选参数options的值background,如果在命令中为该参数指定了具体的值,云数据库MongoDB将忽略该值。

  • count中的选项名称进行更严格的验证。如果您指定未知的选项名称,执行该命令会出错,更多信息,请参见count

  • cursor.min()cursor.max()需要指定索引,更多信息,请参cursor.min()cursor.max()

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

  • 删除groupcopydbclone

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

MongoDB 4.0

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

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

MongoDB 4.0的更多信息,请参见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及以上大版本时,需要关注如下兼容性变更内容:

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

  • $type: "array"能直接检测到数组类型的文档(即能够同时检测到示例中_id为1和2的文档),之前只能检测到嵌套型的数组类型文档(仅能检测到示例中_id为2的文档)。

    示例:

    {"_id":1,"a":[1,2,3]}
    {"_id":2,"a":[1,2,[3,4]]}

    $type的更多信息,请参见$type

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

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

    • $sort(aggregation)$sort stage的内存限制为100 MB,如果超出该限制,$sort将报错。$sort(aggregation)的更多信息,请参见$sort (aggregation)

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

  • ISODate(日期类型)的值转换成字符串返回,支持毫秒(ms),且在末尾添加Z

  • 不再支持snapshot查询选项。

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

MongoDB 3.4

  • 不再支持group,请使用aggregate中的$group (aggregation)替代。$group (aggregation)的更多信息,请参见$group (aggregation)

  • 使用$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

0

评论区