定義
setUserWriteBlockModeバージョン 6.0 で追加。
setUserWriteBlockModeコマンドは、クラスター全体への書込みのブロックとブロック解除を実行します。Cluster-to-Cluster Sync中に、クラスタ間同期ツールである
mongosyncはsetUserWriteBlockModeコマンドを使用して宛先クラスターへの書込みをブロックします。 詳しくは、 HTTP API startコマンドを参照してください。レプリカセットでの書込みをすでにブロックしている場合、指定された
reasonが書込みブロックを最初に有効にしたときに指定した理由と一致しないと、global: trueを使用してsetUserWriteBlockModeに対する後続の呼び出しが失敗し、IllegalOperationエラーが発生します。エラーメッセージには、現在の理由と、失敗したコマンドで指定された理由の両方が含まれます。シャーディングされたクラスターでは、この制約は強制されません。注意
bypassWriteBlockingMode特権を持つユーザーとアプリケーションは、ブロックをバイパスして書込みを引き続き実行できます。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M0 および Flex クラスターではサポートされていません。詳細については、「 サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { setUserWriteBlockMode: 1, global: <boolean>, reason: <string> // Optional } )
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | タイプ | 説明 |
|---|---|---|
| integer | このフィールドを |
| ブール値 |
|
| string | 任意。書込みをブロックする理由を指定します。次の値を受け入れます。
|
必要なアクセス権
setUserWriteBlockModeコマンドを実行するには、ユーザーにsetUserWriteBlockMode特権が必要です。
例
ユーザー書込みブロック モードを有効にします。
db.adminCommand( { setUserWriteBlockMode: 1, global: true } ) コレクションにレコードを追加します。
db.names.insertOne( { name: "George Washington Cable" } ) ユーザーの書込みブロックが有効になっているため、サーバーは書込みをブロックします。
出力例:
MongoServerError: User writes blocked ユーザーの書込みブロック モードを無効にします。
db.adminCommand( { setUserWriteBlockMode: 1, global: false } ) コレクションにレコードを追加します。
db.names.insertOne( { name: "George Washington Cable" } ) insertOne()メソッドはコレクションに書き込みます。 ユーザーの書込みブロックが無効になっているため、サーバーは書込みを許可します。