setIndexCommitQuorum
setIndexCommitQuorum
Changes the minimum number of data-bearing members (i.e commit quorum), including the primary, that must complete an in-progress simultaneous index build before the primary marks those indexes as ready.
Compatibility
This command is available in deployments hosted in the following environments:
MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
Note
This command is supported in all MongoDB Atlas clusters. For information on all commands, see Unsupported Commands.
MongoDB Enterprise: The subscription-based, self-managed version of MongoDB
MongoDB Community: The source-available, free-to-use, and self-managed version of MongoDB
Syntax
The command has the following syntax:
db.runCommand( { setIndexCommitQuorum: <string>, indexNames: [ <document> ], commitQuorum: <int> | <string>, comment: <any> } )
Command Fields
The command takes the following fields:
Field | Type | Description |
---|---|---|
string | The name of the collection for which the indexes are being built. | |
array | An array of in-progress index builds to modify. Each element of the array must be the name of the index. The indexes specified to | |
int or string | The minimum number of data-bearing replica
set members (i.e. commit quorum), including the primary, that
must report a successful index build before the primary
marks the Starting in MongoDB v5.0, it's possible to resume some
interrupted index builds
when the commit quorum is set to Replica set nodes in a commit quorum must have Supports the following values:
| |
comment | any | Optional. A user-provided comment to attach to this command. Once set, this comment appears alongside records of this command in the following locations:
A comment can be any valid BSON type (string, integer, object, array, etc). |
Behavior
Note
Requires featureCompatibilityVersion 4.4+
Each mongod
in the replica set or sharded cluster
must have featureCompatibilityVersion set to at
least 4.4
to start index builds simultaneously across
replica set members.
Issuing setIndexCommitQuorum
has no effect on index builds
started with commitQuorum of
0
.
Important
Replica set nodes with buildIndexes
set to false
can't be included in a commit quorum.
Examples
Index builds on a replica set or sharded cluster build simultaneously across
all data-bearing replica set members. For sharded clusters, the index build
occurs only on shards containing data for the collection being indexed.
The primary requires a minimum number of data-bearing voting
members (i.e commit quorum), including itself,
that must complete the build before marking the index as ready for
use. See Index Builds in Replicated Environments for more
information.
The following operation starts an index build of two indexes:
db.getSiblingDB("examples").invoices.createIndexes( [ { "invoices" : 1 }, { "fulfillmentStatus" : 1 } ] )
By default, index builds use "votingMembers"
commit quorum, or all
data-bearing voting replica set members. The following operation
modifies the index build commit quorum to "majority"
, or a
simple majority of data-bearing voting members:.
db.getSiblingDB("examples").runCommand( { "setIndexCommitQuorum" : "invoices", "indexNames" : ["invoices_1", "fullfillmentStatus_1"], "commitQuorum" : "majority" } )
The indexes specified to
indexNames
must be the entire set of in-progress builds associated to a given index builder, i.e. thecreateIndexes()
operation.The
indexNames
field specifies the names of the indexes. Since the indexes were created without an explicit name, MongoDB generated an index name by concatenating the names of the indexed fields and the sort order.