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

setDefaultRWConcern

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
setDefaultRWConcern

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

  • setDefaultRWConcernレプリカセットの場合は、 mongodプライマリ で コマンドを発行します。

  • シャーディングされたクラスターの場合は、mongossetDefaultRWConcernを発行し

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

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、 「サポートされていないコマンド」を参照してください。

  • 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) の設定を含むドキュメント。有効な読み取り保証オブジェクトを指定します。

  • setDefaultRWConcernは次のレベルのサブセットをサポートします。

  • 現在設定されているデフォルトの読み取り保証を設定解除するには、空のドキュメント{}を指定します。

  • setDefaultRWConcernlevelsの読み取り保証のみをサポートします。 デフォルトの読み取り保証 (read concern) では、他の読み取り保証 (read concern) 設定を指定することはできません。

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

object

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

  • 書込み保証(write concern) w設定の場合、 setDefaultRWConcernw : 0を除くすべての書込み保証値をサポートします。

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

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

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

オブジェクト

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

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

comment
any

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

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

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

注意

FeatureCompatibilityVersion 4.4 以上が必要です。

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

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

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

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

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

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

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

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

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

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

重要

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

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

  • これらはコマンドは、設定されたグローバルデフォルト書込み保証と無関係に "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.

戻る

setParameter