Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

setIndexCommitQuorum

在此页面上

  • 兼容性
  • 语法
  • 命令字段
  • 行为
  • 示例
setIndexCommitQuorum

setIndexCommitQuorum命令设置在主节点提交索引之前必须准备好提交其本地索引构建的数据承载节点的最小数量。

此命令可用于以下环境中托管的部署:

  • 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

要修改的进行中索引构建的数组。 数组的每个元素都必须是索引的名称

indexNames指定的索引必须是与给定索引构建器关联的整个正在进行的构建集,即由单个createIndexesdb.collection.createIndexes()操作构建的索引。

int or string

承载数据的副本集成员的最小数量(即提交法定节点数),包括主节点,必须在主节点将 indexes 标记为就绪之前报告索引构建成功。

从MongoDB v 5.0开始, 当提交法定人数设立为"votingMembers"时,可以恢复某些中断的索引构建

提交法定人数中的副本集节点必须将 members[n].buildIndexes 设置为 true。如果任何投票节点将 members[n].buildIndexes设置为 false,则无法使用默认 "votingMembers" 提交法定人数。配置所有节点以将 members[n].buildIndexes 设置为 true,或者选择不同的提交法定人数。

支持以下值:

  • "votingMembers" - 所有承载数据的有投票权副本集成员(默认)。“投票”成员是 members[n].votes 大于 0 的任何副本集成员。

  • "majority" - 数据承载投票副本集成员的简单多数制。

  • <int> - 特定数量的承载数据的副本集节点。 指定一个大于0的整数。

  • 副本集标记名称

comment
any

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

注意

需要 featureCompatibilityVersion 4.4+

副本集或分片集群中的每个 mongod 必须featureCompatibilityVersion 设置为至少 4.4,才能跨副本集节点同时启动索引构建。

发出setIndexCommitQuorum对使用0commitQuorum启动的索引构建没有影响。

重要

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通过连接索引字段的名称和排序顺序来生成索引名称。

后退

setFeatureCompatibilityVersion