数据库版本 | 兼容性变更说明 |
---|
MongoDB 6.0 | 如果聚合管道里使用的内存超过了100 MB,默认会写入数据到磁盘的临时文件中。若要更改此默认行为,请修改全局参数allowDiskUseByDefault 为false 。 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 命令的参数进行严格校验,无法兼容mgo 。saslContinue 只需要conversationId 和payload 参数,而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 | MongoDB 4.2的更多信息,请参见Compatibility Changes in MongoDB 4.2。 |
MongoDB 4.0 | 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。
数组排序结果,发生以下变更: 在进行更新操作时,如果需要同时更新多个字段,新字段将按照字典顺序添加,更多信息,请参见$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: true 的update 。 示例: 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。 |
评论区