setFeatureCompatibilityVersion
在本页面
Definition
setFeatureCompatibilityVersion
- 3.4 版的新功能。
在版本 3.6 中更改。
启用或禁用用于保留与 MongoDB 早期版本不兼容的数据的功能。您只能针对admin
数据库发布setFeatureCompatibilityVersion。
该命令采用以下形式:
db.adminCommand( { setFeatureCompatibilityVersion: <version> } )
version
的值为:
Version | Description |
---|---|
"3.6" | 适用于 MongoDB 3.6 部署 |
启用3 .6 可保留与 MongoDB 3.4 不兼容的数据的功能。
启用这些向后不兼容功能可能会使降级过程复杂化,因为在降级之前必须删除所有持久的向后不兼容功能。
建议升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。
| "3.4"
| 可用于 MongoDB 3.4 和 MongoDB 3.6 部署
如果在 MongoDB 3.4 部署中设置,
启用3 .4 保留与 MongoDB 3.2 不兼容的数据的功能。
启用这些向后不兼容的功能可以降级过程复杂化。有关详细信息,请参见删除 3.4 不兼容的功能。
建议升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。
如果在 MongoDB 3.6 部署中设置,
禁用3 .6 可保留与 MongoDB 3.4 不兼容的数据的功能。
| "3.2"
| 可用于 MongoDB 3.4 部署
禁用3 .4 保留与 MongoDB 3.2 不兼容的数据的功能。
Behavior
与后台操作冲突
某些后台操作(例如索引构建)可能会阻止setFeatureCompatibilityVersion的执行。使用currentOp标识任何正在进行的操作。
Default Values
Deployments | featureCompatibilityVersion |
---|---|
对于新的 3.6 部署 | "3.6" |
对于部署从 3.4 升级 | "3.4" ,直到您setFeatureCompatibilityVersion到"3.6" 为止。 |
对于新的 3.4 部署 | "3.4" |
对于部署从 3.2 升级 | "3.2" ,直到您setFeatureCompatibilityVersion到"3.4" 为止。 |
Idempotency
此命令必须执行对内部系统集合的写入。如果由于某种原因该命令未成功完成,则可以安全地重试该命令,因为该操作是幂等的。
Access Control
如果您的部署强制执行访问控制,则要运行setFeatureCompatibilityVersion,您必须具有授予以下特权的角色:
{
resource: { db: "$setFeatureCompatibilityVersion", collection: "version" },
actions: [ "update" ]
}
clusterAdmin和clusterManager角色授予运行setFeatureCompatibilityVersion的权限。 [1]
clusterAdmin还向view featureCompatibilityVersion授予特权。
另外,您可以仅使用运行setFeatureCompatibilityVersion和getParameter到view featureCompatibilityVersion的权限来创建自定义角色:
db.getSiblingDB("admin").createRole({
role: "fcvRole",
privileges: [
{ resource: { db: "$setFeatureCompatibilityVersion", collection: "version" }, actions: [ "update" ] },
{ resource: { cluster: true }, actions: [ "getParameter" ] }
],
roles: [ ]
})
See also
[1] | 对于 MongoDB 3.6.0-3.6.7,readWriteAnyDatabase角色还授予运行setFeatureCompatibilityVersion的特权。 |
Examples
View FeatureCompatibilityVersion
要查看mongod实例的featureCompatibilityVersion
,请在mongod实例上运行以下命令:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
在结果文档中,featureCompatibilityVersion
的值可以具有以下格式之一。
对于 MongoDB 3.4 mongod实例:
"featureCompatibilityVersion" : <version>
对于 MongoDB 3.6 mongod实例:
- 如果部署具有默认的
featureCompatibilityVersion
,或者针对部署成功执行了setFeatureCompatibilityVersion命令,则featureCompatibilityVersion
的格式为:
"featureCompatibilityVersion" : {
"version" : <version>
}
- 如果mongod处于部分升级或降级状态,则
featureCompatibilityVersion
具有以下形式:
"featureCompatibilityVersion" : {
"version" : <version> ,
"targetVersion" : <target version>
}
例如,如果分片群集具有仅在对mongos运行setFeatureCompatibilityVersion命令时只读的分片副本集,则该命令将失败,并且配置服务器的featureCompatibilityVersion
将包含targetVersion
字段。
或者,如果在setFeatureCompatibilityVersion运行时副本集变为只读,则命令将失败,并且副本集的featureCompatibilityVersion
也将包含targetVersion
字段。
在 MongoDB 3.6 部署中设置功能兼容性版本
启用 3.6 向后不兼容的功能
要启用3 .6 可保留与 MongoDB 3.4 不兼容的数据的功能,请在 MongoDB 3.6 部署上将功能兼容性设置为"3.6"
:
Note
对admin
数据库运行setFeatureCompatibilityVersion命令。
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
禁用 3.6 向后不兼容的功能
要禁用3 .6 可保留与 MongoDB 3.4 不兼容的数据的功能,请在 MongoDB 3.6 部署上将功能兼容性设置为"3.4"
:
Note
对admin
数据库运行setFeatureCompatibilityVersion命令。
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
如果作为从 MongoDB 3.6 降级到 MongoDB 3.4 的降级过程的一部分运行,则还必须删除所有保留为 3.4 的incompatible的功能。请参阅适当的降级过程。
在 MongoDB 3.4 部署上设置功能兼容版本
启用 3.4 向后不兼容的功能
Warning
启用这些向后不兼容的功能可以降级过程复杂化。有关详细信息,请参见删除 3.4 不兼容的功能。
建议升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。
要启用backward incompatible的 3.4 功能,请在 MongoDB 3.4 部署上将功能兼容性设置为"3.4"
:
Note
对admin
数据库运行setFeatureCompatibilityVersion命令。
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
禁用 3.4 向后不兼容的功能
要禁用3 .4 向后不兼容的功能,请在 MongoDB 3.4 部署上将功能兼容性设置为"3.2"
:
Note
db.adminCommand( { setFeatureCompatibilityVersion: "3.2" } )
将featureCompatibilityVersion
设置为"3.2"
会禁用这些功能的使用,但不会删除这些功能的现有用法。
如果作为降级到 3.2 过程的一部分执行,则还必须在降级二进制文件之前手动删除现有用法。有关详细信息,请参见删除 3.4 不兼容的功能。