setIndexCommitQuorum
setIndexCommitQuorum
更改承载数据的节点(即提交法定人数)(包括主节点 (primary node in the replica set)节点)的最小数量,主节点必须先完成正在进行的并行索引构建,然后主节点 (primary node in the replica set)节点才能将这些索引标记为就绪。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有MongoDB Atlas集群都支持此命令。有关Atlas支持所有命令的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { setIndexCommitQuorum: <string>, indexNames: [ <document> ], commitQuorum: <int> | <string>, comment: <any> } )
命令字段
该命令接受以下字段:
字段 | 类型 | 说明 |
---|---|---|
string | 正在为其构建索引的集合的名称。 | |
array | 要修改的进行中索引构建的数组。 数组的每个元素都必须是索引的名称。 为 | |
int or string | 承载数据的副本集成员的最小数量(即提交法定节点数),包括主节点,必须在主节点将 从 MongoDB v 5.0开始, 当提交法定人数设置为 提交法定人数中的副本集节点必须将 支持以下值:
| |
comment | any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
行为
注意
需要 featureCompatibilityVersion 4.4+
副本集或分片集群中的每个 mongod
必须将 featureCompatibilityVersion 设置为至少 4.4
,才能跨副本集节点同时启动索引构建。
发出setIndexCommitQuorum
对使用0
的commitQuorum启动的索引构建没有影响。
重要
buildIndexes设置为false
的副本集节点不能包含在提交法定人数中。
示例
索引构建在副本集或分片集群上,并在所有数据承载副本集成员上同时构建。对于分片集群,索引构建仅会在包含当前被索引集合的数据的分片上进行。主节点需要最少数量的数据承载 voting
节点(即提交法定节点数),包括其自身,这些节点必须在将索引标记为可供使用之前完成构建。 有关详细信息,请参阅复制环境中的索引构建。
以下操作启动两个索引的索引构建:
db.getSiblingDB("examples").invoices.createIndexes( [ { "invoices" : 1 }, { "fulfillmentStatus" : 1 } ] )
默认,索引构建使用"votingMembers"
提交法定人数,或所有承载数据的投票副本集节点。 以下操作将索引构建提交法定人数修改为"majority"
,或数据承载投票成员的简单多数:
db.getSiblingDB("examples").runCommand( { "setIndexCommitQuorum" : "invoices", "indexNames" : ["invoices_1", "fullfillmentStatus_1"], "commitQuorum" : "majority" } )
为
indexNames
指定的索引必须是与给定索引构建器(即createIndexes()
操作)关联的整个正在进行的构建集。indexNames
字段指定索引的名称。 由于创建索引时没有明确的名称, MongoDB通过连接索引字段的名称和排序顺序来生成索引名称。