AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

setDefaultRWConcern(データベースコマンド)

setDefaultRWConcern

setDefaultRWConcern管理コマンドは、 レプリカセットまたはシャーディングされたクラスターの、グローバルなデフォルトの読み取りまたは書込み保証 (write concern)構成を構成します。setDefaultRWConcern はadmin データベースに対して実行する必要があります。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.adminCommand(
{
setDefaultRWConcern : 1,
defaultReadConcern: { <read concern> },
defaultWriteConcern: { <write concern> },
writeConcern: { <write concern> },
comment: <any>
}
)

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明

int

1 に設定します。

object

グローバルな読み取り保証 (read concern) の設定を含むドキュメント。有効な読み取り保証オブジェクトを指定します。

現在のグローバル読み取り保証 (read concern)を変更せずに残すには、このドキュメントを省略します。省略した場合、setDefaultRWConcern は defaultWriteConcern を指定する必要があります。

object

グローバルなデフォルトの書込み保証 (write concern) の構成を含むドキュメント。

  • 書込み保証 (write concern) w 設定では、setDefaultRWConcern は、すべての書込み保証 (write concern) 値をサポートします。ただし w : 0 は除きます。

  • 書込み保証 (write concern)wtimeout setDefaultRWConcern0設定の場合、設定が省略されている場合、 はデフォルトで になります。要求された書込み保証 (write concern)が満たされるまで、操作はブロックされます。グローバルデフォルト を指定する場合は、書込み操作が要求された書込み保証(書込み保証wtimeout (write concern)を実現できるように、 の値が十分に大きいことを確認してください。

  • 現在設定されている書込み保証を設定解除するには、空のドキュメント{}を指定します。

現在のグローバル書込み保証 (write concern)を変更せずに残すには、このドキュメントを省略します。省略した場合、 はsetDefaultRWConcern defaultReadConcern を指定する必要があります。

オブジェクト

任意。 コマンド自体で使用する書込み保証 (write setDefaultRWConcernconcern)を指定するドキュメント。

省略した場合、setDefaultRWConcern は過去に設定されたグローバルのデフォルト書込み保証 (write concern)を使用します (設定されている場合) 。

comment

any

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

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

setDefaultRWConcern は、現在構成されているグローバルのデフォルトの読み取りおよび書込み保証 (write concern) を含むオブジェクトを返します。返されるフィールドの詳細なドキュメントについては、 getDefaultRWConcern を参照してください。

注意

FeatureCompatibilityVersion 4.4 以上が必要です。

setDefaultRWConcernレプリカセットまたはシャーディングされたクラスター内の各 は、 を使用するために、 mongodfeatureCompatibilityVersion を少なくとも に設定する必要があります。4.4

MongoDB5.0 以降では、 コマンドを使用して CWWC(Cluster Wide Write Concern)を設定すると、書込み保証 (writesetDefaultRWConcern concern) ) を設定解除できなくなります。

MongoDB は、読み取りまたは書込み保証が明示的に指定されていない操作にのみ、グローバルなデフォルトの読み取りまたは書込み保証を適用します。

MongoDB でグローバルのデフォルトの読み取りまたは書込み保証が適用されると、その操作は読み取りまたは書込み保証が発行元クライアントによって明示的に指定された場合と同じように動作します。

setDefaultRWConcernレプリカセットプライマリに対して を発行します。プライマリから、新しいグローバルデフォルト設定がレプリカセットの残りのノードに複製されます。更新されたグローバルデフォルト設定がまだ複製されていないセカンダリは、引き続きローカルの「古い」デフォルト設定を使用します。

setDefaultRWConcernの writeConcern を指定して コマンドを発行し、変更がレプリカセットノードの過半数に伝達された後にのみコマンドが返すようにします。w : "majority"

setDefaultRWConcernクラスター内の に対してmongos を発行します。mongos は更新された設定をコンフィギュレーションサーバーレプリカセット(CSRS)に保存します。各 はmongos getDefaultRWConcernCSRS に対して を定期的に発行して、グローバル設定のローカル コピーを更新します。mongos は、更新の間隔中にグローバル デフォルトのローカルの「古い」コピーを使用します。

警告

レプリカセットをシャーディングされたクラスターに変換する場合、変換が完了するまで setDefaultRWConcern コマンドは実行できません。

変更が CSRS ノードの過半数に伝播してからのみコマンドを返すようにするには、w : "majority" writeConcernsetDefaultRWConcern を に設定して コマンドを発行します。

アプリケーションが読み取りまたは書込み保証を明示的に指定せずにmongosに対して操作を発行すると、 mongosは対応するグローバル デフォルト設定を適用します。

グローバルデフォルト設定は、個々のシャードに伝播しません。シャードに対してsetDefaultRWConcern を実行することはできません。

重要

setDefaultRWConcernには featureCompatibilityVersion4.4+ が必要です。配置の featureCompatibilityVersion を4.4 から4.2 にダウングレードすると、クラスター全体のすべての読み取りおよび書込み保証 (write concern) のデフォルトはなくなりますが、mongos インスタンスは最大30 秒デフォルトを適用し続ける可能性があります。

enableShardingやaddShardなど、コンフィギュレーションサーバー上で書込み操作を実行するシャーディング管理コマンドは、グローバルのデフォルト書込み保証設定に対して独自の動作をします。

  • これらはコマンドは、設定されたグローバルデフォルト書込み保証と無関係に "majority"を使用します。

  • これらのコマンドではwtimeoutの最小値として60000を使用します。この値が60000より大きい場合は、グローバルなデフォルト書込み保証のwtimeoutのみが使用されます。

自己管理型配置で認証を強制するレプリカセットまたはシャーディングされたクラスターの場合、setDefaultRWConcern には認証されたユーザーがsetDefaultRWConcern 特権アクションを持っている必要があります。

clusterManager組み込みロール は、setDefaultRWConcern を実行するために必要な特権を提供します。

以下の操作で、グローバル書込み保証を次のように設定します。

db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {
"w" : 2
}
})

この操作は、次のようなドキュメントを返します。

{
"defaultWriteConcern" : {
"w" : 2
},
"updateOpTime" : Timestamp(1586290895, 1),
"updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"),
"localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"),
"ok" : 1,
"$clusterTime" : { ... }
"operationTime" : Timestamp(1586290925, 1)
}

以下の操作で、グローバル読み取り保証を"majority"に設定します。

db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultReadConcern" : { "level" : "majority" }
})

この操作は、次のようなドキュメントを返します。

{
"defaultReadConcern" : {
"level" : "majority"
},
"updateOpTime" : Timestamp(1586290895, 1),
"updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"),
"localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"),
"ok" : 1,
"$clusterTime" : { ... }
"operationTime" : Timestamp(1586290925, 1)
}

以下の操作で、グローバルのデフォルトの読み取りおよび書込み保証を次のように設定します。

db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {
"w" : 2
},
"defaultReadConcern" : { "level" : "majority" }
})

この操作は、次のようなドキュメントを返します。

"defaultWriteConcern" : {
"w" : 2
},
"defaultReadConcern" : {
"level" : "majority"
}

ユーザーは次のアクションを実行できます。

  • グローバルのデフォルト読み取り保証を解除します。

  • グローバルのデフォルト書込み保証をまだ設定していない場合にのみ解除できます。

たとえば、グローバルのデフォルト読み取り保証がlevel: "majority"に設定されているとします。グローバルデフォルト読み取り保証を解除するには、空のドキュメント {} を使用します。

db.adminCommand( {
"setDefaultRWConcern" : 1,
"defaultReadConcern" : {}
} )

この操作は、操作が成功したことを示す以下のドキュメントを返します。

{
defaultReadConcern: { level: 'local' },
defaultWriteConcern: { w: 2, wtimeout: 0 },
updateOpTime: Timestamp({ t: 1656696934, i: 1 }),
updateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"),
defaultWriteConcernSource: 'global',
defaultReadConcernSource: 'implicit',
localUpdateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"),
ok: 1,
'$clusterTime': {
...
},
operationTime: Timestamp({ t: 1656632593, i: 1 })
}

グローバルのデフォルト書込み保証をまだ設定していない場合にのみ解除できます。

グローバルデフォルト書込み保証の設定を解除するには、空のドキュメント{}を使用します。

db.adminCommand( {
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {}
} )

グローバルのデフォルト書込み保証が次の通りである場合、

  • 解除の操作は成功します。

  • 既に設定されている場合、操作は次のエラーを返します。

MongoServerError: The global default write concern cannot be unset
once it is set.