Mongo.setReadPref()
定義
Mongo.setReadPref(mode, tagSet, hedgeOptions)
setReadPref()
Mongo
クライアントがすべてのクエリをレプリカセットのノードにルーティングする方法を制御するには、 接続オブジェクトで メソッドを呼び出します。[ 1 ]注意
読み込み設定(read preference)を使用するには、その接続を使用してドキュメントを取得する前に、接続オブジェクトで
Mongo.setReadPref()
を呼び出す必要があります。
[1] | 特定のクエリに対して読み取り設定を適用するには、反復処理の前にカーソルに cursor.readPref() を適用します。詳しくは、cursor.readPref() を参照してください。 |
パラメーター
Parameter | タイプ | 説明 |
---|---|---|
string | 次の 読み取り設定 モードのいずれか: | |
ドキュメントの配列 | 任意: 指定されたタグを持つノードへの読み取りをターゲットにするために使用されるタグセット。読み込み設定(read preference)モード 詳しくは、「読み込み設定(read preference)のタグセット リスト」を参照してください。 | |
ドキュメント | 重要: MongoDB8.0 以降、ヘッジされた読み取りは非推奨になっています。読み込み設定( 読み込み設定 (read preference) ) 任意: ヘッジの使用を有効にするかどうかを指定するドキュメントは次のとおりです。
ヘッジされた読み取り は シャーディングされたクラスター で利用できます。 ヘッジされた読み取りを使用するには、 読み込み設定(read preference) |
Mongo.setReadPref()
は、読み込み設定(read preference)の 読み込み設定(read preference maxStalenessSeconds
オプションをサポートしていません。
動作
Mongo.setReadPref()
は、次のような動作をします。
db.runCommand() との対話
mongosh 2.0 以降、db.runCommand()
は、接続文字列または Mongo.setReadPref()
メソッドを使用して追加されたグローバルの読み込み設定(read preference)を無視します。希望の読み込み設定(read preference)を指定するには、 db.runCommand()
を呼び出すときに options
引数を使用します。
例
読み込み設定(read preference)モードを指定する
次の操作では、 読み込み設定(read preference)モードを設定して、読み取りの対象を セカンダリ ノードに設定します。 これにより、セカンダリからの読み取りが暗黙的に許可されます。
db.getMongo().setReadPref('secondary')
ただし、mongosh
を使用してプライマリに接続しているときに呼び出された場合、上記のコマンドはクエリをセカンダリにルーティングしません。
読み込み設定(read preference)のタグセットを指定する
特定のタグを持つセカンダリを対象とするには、モードと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 は適格なセカンダリを使用します。
詳しくは、「タグの一致順序」を参照してください。
ヘッジされた読み取りを指定する
重要
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 )