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

デフォルトの MongoDB 読み取り保証(read concern)または書き込み保証(write concern)

読み取り保証 (reading concern)/書込み保証 (write concern)の継承
クリックして拡大します

デフォルトの読み取り保証は以下のとおりです。

操作
デフォルトの読み取り保証 (read concern)

プライマリに対する読み取り

"local"

  • この読み取り保証 (read concern) は、ロールバックされる可能性のあるデータを返す場合があります。

  • この読み取り保証 (read concern) は因果整合性を保証するものではありません。

セカンダリに対して読み取ります。

"local"

  • この読み取り保証 (read concern) は、ロールバックされる可能性のあるデータを返す場合があります。

  • この読み取り保証 (read concern) は因果整合性を保証するものではありません。

次の情報は、 トランザクション 外で実行される操作に適用されます。トランザクション内で実行される操作に関連する読み取り保証 (read concern)については、 Operations in Transactionsタブをクリックしてください。

MongoDB ドライバーを使用すると、デフォルトの読み取り保証を上書きし、以下のレベルでの操作の読み取り保証を設定できます。

レベル
説明

クライアント レベル

データベース、コレクション、または操作レベルでより詳細な操作の読み取り保証が設定されていない限り、操作に適用されます。

データベース レベル

コレクション レベルまたは操作レベルで読み取り保証が設定されていない限り、データベースのコレクションに対する操作(クライアント レベルの読み取り保証の上書きなど)に適用されます。

トランザクション内の操作には適用されません。

コレクション レベル

操作レベルで読み取り保証が設定されていない限り、コレクションに対する読み取り操作(データベースまたはクライアントの読み取り保証の上書きなど)に適用されます。

トランザクション内の操作には適用されません。

操作レベル

特定の読み取り操作(データベース、クライアント、またはコレクションの読み取り保証の上書きなど)に適用されます。

操作時に読み取り保証 (read concern)を設定能力どうかは、ドライバーによって異なります。詳細については、 ドライバーのドキュメント を参照してください。

トランザクション内の操作には適用されません。

読み取り保証 (read concern) について詳しくは、「読み取り保証 (read concern)」を参照してください。

読み取り保証 (reading concern)/書込み保証 (write concern)の継承
クリックして拡大します

暗黙のデフォルト書込み保証 (write concern)はw: majorityです。w: majority は、writeConcernMajorityJournalDefault によって制御されるデフォルトで、レプリカセットがディスク上のジャーナリングを待機することを要求することで書き込み (write)耐久性を確保します。ただし、アービタを含むレプリカセットの配置ではエッジケースがあります。

  • レプリカセットの投票権の過半数は、投票ノードの半数に 1 を加え、端数を切り捨てた値です。データを保持する投票ノードの数が投票の過半数を超えない場合、デフォルトの書込み保証 (write concern) は{ w: 1 } になります。

  • その他のすべてのシナリオでは、デフォルトの書込み保証 (write concern) は{ w: "majority" }です。

具体的には、MongoDB では次の式を使用して、デフォルトの書込み保証 (write concern)を決定します。

if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ]
defaultWriteConcern = { w: 1 }
else
defaultWriteConcern = { w: "majority" }

たとえば、次の配置とそれぞれのデフォルトの書込み保証 (write concern) について考えてみましょう。

Non-Arbiters
アービタ
投票ノード
投票ノードの過半数
暗黙のデフォルト書込み保証 (write concern)

2

1

3

2

{ w: 1 }

4

1

5

3

{ w: "majority" }

  • 最初の例では、次のようになります。

    • 投票ノードは合計 3 つあり、非アービタ ノードが 2 つ、アービタ ノードが 1 つです。

    • 投票ノードの過半数(1 に 3 の半分を足し、切り捨てた値)は 2 です。

    • 非アービタの数 (2) は、投票ノードの過半数 (2) と等しく、暗黙の書込み保証 (write concern) { w: 1 }になります。

  • 2 番目の例では、次のようになります。

    • 投票ノードは合計 5 つあり、非アービタ ノードが 4 つ、アービタ ノードが 1 つあります。

    • 投票ノードの過半数(1 に 5 の半分を足し、切り捨てた値)は 3 です。

    • 非アービタ数 (4) が投票ノードの過半数(3) よりも多いため、暗黙の書込み保証 (write concern)が { w: "majority" } になります。

次の情報は、 トランザクション 外で実行される操作に適用されます。トランザクション内で実行される操作に関連する読み取り保証 (read concern)については、 Operations in Transactionsタブをクリックしてください。

MongoDB ドライバーを使用すると、デフォルトの書込み保証を上書きし、以下のレベルでの操作の書込み保証を設定できます。

レベル
説明

クライアント レベル

操作、データベース、またはコレクションでより詳細な書込み保証が操作に対して設定されていない限り、操作に適用されます。

データベース レベル

コレクション レベルまたは操作レベルで書込み保証が設定されていない限り、データベースのコレクションに対する操作(クライアント レベルの書込み保証の上書きなど)に適用されます。

トランザクション内の操作には適用されません。

コレクション レベル

操作レベルで書込み保証が設定されていない限り、コレクションに対する書込み操作(データベースまたはクライアントの書込み保証の上書きなど)に適用されます。

トランザクション内の操作には適用されません。

操作レベル

特定の書込み操作に適用されます。

操作時に書込み保証 (write concern)を設定能力かどうかは、ドライバーによって異なります。詳細については、 ドライバーのドキュメント を参照してください。

トランザクション内の操作には適用されません。

利用可能な書込み保証 (write concern) の詳細については、「書込み保証 (write concern)」を参照してください。

因果関係がコンシステントなクライアント セッションでは、クライアント セッションは次の場合にのみ因果整合性を保証します。

  • 関連する読み取り操作が "majority" 読み取り保証 (read concern)を使用し、かつ

  • 関連する書き込み操作には "majority" 書込み保証 (write concern) が使用されます。