setFeatureCompatibilityVersion

在本页面

Definition

  • setFeatureCompatibilityVersion
    • 3.4 版的新功能。

在版本 3.6 中更改。

启用或禁用用于保留与 MongoDB 早期版本不兼容的数据的功能。您只能针对admin数据库发布setFeatureCompatibilityVersion

该命令采用以下形式:

db.adminCommand( { setFeatureCompatibilityVersion: <version> } )

version的值为:

VersionDescription
"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 不兼容的数据的功能

Note

  • 对于独立服务器,请在独立mongod实例上运行命令。

  • 对于副本集,请在主数据库上运行命令。大多数的数据承载成员必须可用。

  • 对于分片群集,请在mongos实例上运行命令。

Behavior

与后台操作冲突

某些后台操作(例如索引构建)可能会阻止setFeatureCompatibilityVersion的执行。使用currentOp标识任何正在进行的操作。

Default Values

DeploymentsfeatureCompatibilityVersion
对于新的 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" ]
}

clusterAdminclusterManager角色授予运行setFeatureCompatibilityVersion的权限。 [1]

clusterAdmin还向view featureCompatibilityVersion授予特权。

另外,您可以仅使用运行setFeatureCompatibilityVersiongetParameterview featureCompatibilityVersion的权限来创建自定义角色:

db.getSiblingDB("admin").createRole({
   role: "fcvRole",
   privileges: [
      { resource: { db: "$setFeatureCompatibilityVersion", collection: "version" }, actions: [ "update" ] },
      { resource: { cluster: true }, actions: [ "getParameter" ] }
   ],
   roles: [ ]
})
[1]对于 MongoDB 3.6.0-3.6.7,readWriteAnyDatabase角色还授予运行setFeatureCompatibilityVersion的特权。

Examples

View FeatureCompatibilityVersion

要查看mongod实例的featureCompatibilityVersion,请在mongod实例上运行以下命令:

Note

该操作在mongos个实例上未定义。对于已启用访问控制的分片群集,要对分片副本集的成员运行命令,您必须以分片本地用户身份连接到该成员。

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命令。

  • 对于独立服务器,请在独立mongod实例上运行命令。

  • 对于副本集,请在主数据库上运行命令。大多数的数据承载成员必须可用。

  • 对于分片群集,请在mongos实例上运行命令。

db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

禁用 3.6 向后不兼容的功能

要禁用3 .6 可保留与 MongoDB 3.4 不兼容的数据的功能,请在 MongoDB 3.6 部署上将功能兼容性设置为"3.4"

Note

admin数据库运行setFeatureCompatibilityVersion命令。

  • 对于独立服务器,请在独立mongod实例上运行命令。

  • 对于副本集,请在主数据库上运行命令。大多数的数据承载成员必须可用。

  • 对于分片群集,请在mongos实例上运行命令。

  • 仅 MongoDB 3.6 和 MongoDB 3.4 部署支持"3.4" featureCompatibilityVersion。

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命令。

  • 对于独立服务器,请在独立mongod实例上运行命令。

  • 对于副本集,请在主数据库上运行命令。大多数的数据承载成员必须可用。

  • 对于分片群集,请在mongos实例上运行命令。

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )

禁用 3.4 向后不兼容的功能

要禁用3 .4 向后不兼容的功能,请在 MongoDB 3.4 部署上将功能兼容性设置为"3.2"

Note

admin数据库运行setFeatureCompatibilityVersion命令。

  • 对于独立服务器,请在独立mongod实例上运行命令。

  • 对于副本集,请在主数据库上运行命令。大多数的数据承载成员必须可用。

  • 对于分片群集,请在mongos实例上运行命令。

  • 仅 MongoDB 3.4 和 MongoDB 3.2 部署支持"3.2" featureCompatibilityVersion。

db.adminCommand( { setFeatureCompatibilityVersion: "3.2" } )

featureCompatibilityVersion设置为"3.2"会禁用这些功能的使用,但不会删除这些功能的现有用法。

如果作为降级到 3.2 过程的一部分执行,则还必须在降级二进制文件之前手动删除现有用法。有关详细信息,请参见删除 3.4 不兼容的功能