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

Mongo.setReadPref()

項目一覧

  • 定義
  • 互換性
  • 動作
Mongo.setReadPref(mode, tagSet, hedgeOptions)

setReadPref()Mongoクライアントがすべてのクエリをレプリカセットのノードにルーティングする方法を制御するには、 接続オブジェクトで メソッドを呼び出します。[ 1 ]

注意

読み込み設定(read preference)を使用するには、その接続を使用してドキュメントを取得する前に、接続オブジェクトでMongo.setReadPref()を呼び出す必要があります。

[1] 特定のクエリに対して読み取り設定を適用するには、反復処理の前にカーソルに cursor.readPref() を適用します。詳しくは、cursor.readPref() を参照してください。
Parameter
タイプ
説明
string

次の 読み取り設定 モードのいずれか: primaryprimaryPreferredsecondarysecondaryPreferred、または nearest

ドキュメントの配列

任意: 指定されたタグを持つノードへの読み取りをターゲットにするために使用されるタグセット。読み込み設定(read preference)モード primary. を使用している場合、tagSet は使用できません。

詳しくは、「読み込み設定(read preference)のタグセット リスト」を参照してください。

ドキュメント

重要: MongoDB8.0 以降、ヘッジされた読み取りは非推奨になっています。読み込み設定( 読み込み設定 (read preference) )nearest を指定するクエリは、デフォルトでヘッジされた読み取りを使用しなくなりました。ヘッジされたヘッジされた読み取りを明示的に指定すると、 MongoDBはヘッジされた読み取りを実行し、警告をログに記録します。

任意: ヘッジの使用を有効にするかどうかを指定するドキュメントは次のとおりです。

{ enabled: <boolean> }

enabled フィールドのデフォルトは true です。つまり、空のドキュメント { } を指定することは { enabled: true } を指定することと同じです。

ヘッジされた読み取り は シャーディングされたクラスター で利用できます。 ヘッジされた読み取りを使用するには、 mongosにヘッジされた読み取り用のenabled support (デフォルト)、およびprimary以外の 読み込み設定( read preference ) がヘッジされた読み取りの使用を有効にする必要があります。

読み込み設定(read preference)nearest により、シャーディングされたクラスターでのヘッジ読み取りの使用がデフォルトで有効になります。つまり、デフォルトでは { enabled: true } になります。

Mongo.setReadPref()は、読み込み設定(read preference)の 読み込み設定(read preference maxStalenessSecondsオプションをサポートしていません。

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

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

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

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

Mongo.setReadPref() は、次のような動作をします。

mongosh 2.0 以降、db.runCommand() は、接続文字列または Mongo.setReadPref() メソッドを使用して追加されたグローバルの読み込み設定(read preference)を無視します。希望の読み込み設定(read preference)を指定するには、 db.runCommand() を呼び出すときに options 引数を使用します。

次の操作では、 読み込み設定(read preference)モードを設定して、読み取りの対象を セカンダリ ノードに設定します。 これにより、セカンダリからの読み取りが暗黙的に許可されます。

db.getMongo().setReadPref('secondary')

ただし、mongosh を使用してプライマリに接続しているときに呼び出された場合、上記のコマンドはクエリをセカンダリにルーティングしません。

特定のタグを持つセカンダリを対象とするには、モードtagsSet配列の両方を含めます。

db.getMongo().setReadPref(
"secondary",
[
{ "datacenter": "B" }, // First, try matching by the datacenter tag
{ "region": "West"}, // If not found, then try matching by the region tag
{ } // If not found, then use the empty document to match all eligible members
]
)

セカンダリ選択プロセス中に、MongoDB は最初に datacenter: "B" タグを持つセカンダリ ノードを検索しようとします。

  • 見つかった場合、MongoDB は適格なセカンダリを datacenter: "B" タグを持つものに制限し、残りのタグを無視します。

  • 何も見つからない場合、MongoDB は "region": "West" タグを持つセカンダリ ノードを検索しようとします。

    • 見つかった場合、MongoDB は適格なセカンダリを "region": "West" タグのあるものに制限します。

    • 何も見つからない場合、MongoDB は適格なセカンダリを使用します。

詳しくは、「タグの一致順序」を参照してください。

Tip

以下も参照してください。

重要

MongoDB 8.0以降、ヘッジされた読み取りは非推奨です。 読み込み設定(read preference nearestを指定するクエリは、デフォルトでヘッジされた読み取りを使用しなくなりました。 ヘッジされた読み取りを明示的に指定すると、MongoDB はヘッジされた読み取りを実行し、警告をログに記録します。

シャーディングされたクラスターの場合、非プライマリ 読み込み設定( read preference ) ヘッジされ た読み取りを有効にできます。ヘッジされた読み取りを使用するには、 mongosにヘッジされた読み取り用のenabled support (デフォルト)と、 primary以外の 読み込み設定( read preference ) でヘッジされた読み取りの使用が有効になっている必要があります。

ヘッジされた読み取りを使用してシャーディングされたクラスター上のセカンダリを対象とするには、次の例のようにモードhedgeOptionsの両方を含めます。

  • タグセットなし

    db.getMongo().setReadPref(
    "secondary", // mode
    null, // tag set
    { enabled: true } // hedge options
    )
  • タグセットあり

    db.getMongo().setReadPref(
    "secondary", // mode
    [ { "datacenter": "B" }, { } ], // tag set
    { enabled: true } // hedge options
    )

戻る

Mongo.setCausalConsistency