Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

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に指定されるインデックスは、特定のインデックス ビルダに関連付けられている進行中のビルドのセット全体である必要があります。つまり、単一のcreateIndexesまたはdb.collection.createIndexes()操作によってビルドされたインデックスです。

int or string

データを保持するレプリカセット ノードの最小数( コミットクォーラム)で、プライマリがindexesを準備完了とマークする前に、インデックス ビルドの成功を報告する必要があるもの(プライマリを含む)を指します。

MongoDB v 5.0以降、 コミットクォーラムが"votingMembers"に設定されている場合、中断されたインデックスビルドを一部再開することができます。

コミットクォーラム内のレプリカセット ノードでは、 members[n].buildIndexestrueに設定されている必要があります。 いずれの投票ノードでもmembers[n].buildIndexesfalseに設定されている場合、デフォルトの"votingMembers"コミットクォーラムは使用できません。 members[n].buildIndexestrueに設定してすべてのノードを構成するか、別のコミットクォーラムを選択します。

次の値をサポートします。

  • "votingMembers" - データを保持するすべての投票レプリカセット ノード(デフォルト)。 「投票」ノードとは、 members[n].votes0より大きい任意のレプリカセット ノードです。

  • "majority" - データを保持するレプリカセット ノードの単純過半数。

  • <int> - データを保持する特定数のレプリカセット ノード。 0より大きい整数を指定します。

  • レプリカセットのタグ名

comment
any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

注意

FeatureCompatibilityVersion 4.4 以上が必要です。

レプリカセット全体でインデックス構築を同時に開始するには、レプリカセットまたはシャーディングされたクラスター内の各 mongod は、featureCompatibilityVersion を少なくとも 4.4 に設定する必要があります

setIndexCommitQuorumを発行しても、 commitQuorum0のインデックスビルドには影響しません。

重要

buildIndexesfalseに設定されているレプリカセット ノードはコミットクォーラムに含めることができません。

レプリカセットまたはシャーディングされたクラスター上のインデックスは、データを保持するすべてのレプリカセット ノードで同時に構築されます。シャーディングされたクラスターの場合、インデックス構築は、インデックスが作成されるコレクションのデータを含むシャードでのみ行われます。プライマリは、インデックスを使用可能とマークする前に、自身を含む最小限のデータを保持する voting ノード(コミットクォーラム)でインデックス構築を完了する必要があります。詳細については、「レプリケートされた環境でのインデックス構築」を参照してください。

次の操作では、2 つのインデックスのインデックスビルドを開始します。

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