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

setIndexCommitQuorum

在此页面上

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

更改承载数据的节点(即提交法定人数)(包括主节点 (primary node in the replica set)节点)的最小数量,主节点必须先完成正在进行的并行索引构建,然后主节点 (primary node in the replica set)节点才能将这些索引标记为就绪。

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

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有MongoDB Atlas集群都支持此命令。有关Atlas支持所有命令的信息,请参阅不支持的命令。

该命令具有以下语法:

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