- 发布笔记 >
- MongoDB 3.4 发布笔记 >
- MongoDB 3.4 中的兼容性变化
MongoDB 3.4 中的兼容性变化¶
下面的 3.4 变化可能会影响与之前版本MongoDB的兼容性。
也可查阅 MongoDB 3.4 发布笔记 。
分片集群变化¶
shardsvr 要求¶
对于一个 3.4 分片集群, 分片的 mongod 实例 必须 显式指定它的角色为 shardsvr ,要么通过配置文件设置 sharding.clusterRole 或者通过命令行选项 --shardsvr 进行设置。
配置选项的删除¶
MongoDB 3.4 从 mongos 中删除了以下配置选项:
sharding.chunkSize 配置文件设置以及 --chunkSize 命令行选项
sharding.autoSplit 配置文件设置以及 --noAutoSplit 命令行选项
SCCC配置服务器支持的删除¶
3.4 分片集群不再支持镜像(SCCC) mongod 实例作为配置服务器的使用。 SCCC配置服务器的使用已经在3.2版本中弃用,不再有效。相反地,部署您的配置服务器为复制集(CSRS)。
为了将您的分片集群升级到3.4 版本,配置服务器必须运行为复制集。
为了将您现有的配置服务器从SCCC转化到CSRS,请查阅 Upgrade Config Servers to Replica Set 。
已弃用的操作¶
group¶
Mongodb 3.4 弃用了下列命令以及 mongo shell方法:
group 命令以及 db.collection.group() 。 使用 db.collection.aggregate() 或者 db.collection.mapReduce() 代替。
更严格的集合验证和索引规范¶
更严格的集合验证选项¶
MongoDB 3.4 强制要求在 create 以及 db.createCollection() 操作中进行更严格的集合验证选项;即:指定的选项必须是 create 和 db.createCollection() 支持的可靠选项。
例如,下列操作不再有效:
db.createCollection( "myCappedCollection", { caped: true, size: 5242880 } )
更严格的索引规范验证¶
MongoDB 3.4 强制要求在 createIndexes 和 db.collection.createIndex() 操作期间更严格的索引规范。这些强制要求不会应用与现有索引。
更严格的验证包括:
保证 索引键模式 key: value 是有效的。详细说来,值可以是:
值
描述
大于0的数
对于递增的索引
小于0的数
对于递减的索引
字符串 “text” , “2dsphere” , “2d” , 或者 “hashed”
对于特殊的索引类型
例如,下面的操作不再有效:
db.collection.createIndex( { x: 0 } ); db.collection.createIndex( { y: "text2d" } ); db.collection.createIndex( { z: NaN } ); db.collection.createIndex( { x: 1, unique: true } )
保证指定的 index options 是有效的。之前的版本忽略了无效的选项。例如,下面的操作不再有效:
db.collection.createIndex( { y: 1 }, { uniques2: true} ); db.collection.createIndex( { z: 1 }, { expireAfterSec: 350 } )
一般性兼容性变化¶
删除了弃用 的 textSearchEnabled 参数。从2.6版本开始,MongoDB默认开启文本检索功能。
删除了 mongosniff 。 在MongoDB 3.4 中, mongoreplay 替换了 mongosniff,提供了 mongosniff 的功能更加灵活的超集。
用户角色变化¶
下列内置角色的权限不应用于 local 和 config 数据库。
-
为了提供在 local 数据库上 的 read 权限,可以在 admin 数据库中创建一个用户, 授予 local 数据库中的 read 角色。也可查阅 clusterManager 和 clusterMonitor 角色了解对 config 和 local 数据库的读取操作。
-
为了提供在 local 数据库上 的 readWrite 权限,可以在 admin 数据库中创建一个用户, 授予 local 数据库中的 readWrite 角色。也可查阅 clusterManager 和 clusterMonitor 角色了解对 config 和 local 数据库的读取操作。
userAdminAnyDatabase , 以及
-
为了提供在 local 数据库上 的 dbAdmin 权限,可以在 admin 数据库中创建一个用户, 授予 local 数据库中的 dbAdmin 角色。也可查阅 clusterManager 和 clusterMonitor 角色了解对 config 和 local 数据库的读取操作。
相对应地, clusterManager , clusterMonitor , backup , 和 restore 角色包括在 local 和 config 数据库上其它的读写权限。
逆向不兼容的功能¶
下面的3.4 功能保存之前MongoDB版本不能正确处理的数据,要求 featureCompatibilityVersion 设置为 "3.4" :
索引版本 v: 2 。 v:2 索引增加了对collation和十进制数据的支持。之前的索引版本既不支持collation也不支持十进制数据类型。
如果是 featureCompatibilityVersion: "3.4" , 那么在MongoDB 3.4 中创建的索引默认为 v: 2 。否则的话,新索引默认为 v: 1 。
如果想要设置 featureCompatibilityVersion ,请查阅 setFeatureCompatibilityVersion 命令。
警告
启动这些 向后不兼容的功能可以查阅 删除 3.4 不兼容的功能 。查阅 删除 3.4 不兼容的功能 了解更多细节。
推荐在升级之后,您允许您的部署在预模拟阶段在不启动这些功能的情况下运行,以保证降级可能性为最小。当您确认了降级的可能性最小时,开启这些功能。
3.4 部署有下列默认的 featureCompatibilityVersion 值:
3.4 部署 |
featureCompatibilityVersion |
---|---|
对于新部署 |
"3.4" |
对于 upgraded from 3.2 的部署 |
"3.2" 直到您 setFeatureCompatibilityVersion 为 "3.4" 。 |
如果数据库包含视图、collation规范,或者 v:2 索引,之前版本的 MongoDB将不会启动。如果数据包含十进制数据类型,这些文档上的操作也许会失败。请查阅 降级 MongoDB 3.4 到 3.2 了解更多细节。 如果您想要降级,您必须在降级二进制之前删除数据库中不兼容功能相关的数据。