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 | 変更する進行中のインデックス ビルドの配列。 配列の各要素は、インデックスの名前である必要があります。
| |
int or string | データを保持するレプリカセット ノードの最小数( コミットクォーラム)で、プライマリが MongoDB v 5.0以降、 コミットクォーラムが コミットクォーラム内のレプリカセット ノードでは、 次の値をサポートします。
| |
comment | any | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。
コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 |
動作
注意
FeatureCompatibilityVersion 4.4 以上が必要です。
レプリカセット全体でインデックス構築を同時に開始するには、レプリカセットまたはシャーディングされたクラスター内の各 mongod
は、featureCompatibilityVersion を少なくとも 4.4
に設定する必要があります。
setIndexCommitQuorum
を発行しても、 commitQuorumが0
のインデックスビルドには影響しません。
重要
buildIndexesがfalse
に設定されているレプリカセット ノードはコミットクォーラムに含めることができません。
例
レプリカセットまたはシャーディングされたクラスター上のインデックスは、データを保持するすべてのレプリカセット ノードで同時に構築されます。シャーディングされたクラスターの場合、インデックス構築は、インデックスが作成されるコレクションのデータを含むシャードでのみ行われます。プライマリは、インデックスを使用可能とマークする前に、自身を含む最小限のデータを保持する 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 はインデックス フィールドの名前とソート順序を連結してインデックス名を生成しました。