cursor.readPref()
定義
cursor.readPref(mode, tagSet, hedgeOptions)
重要
mongosh メソッド
このページでは、
mongosh
メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません。MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
カーソルに
readPref()
を追加して、クライアントがレプリカセットのノードにクエリをルーティングする方法を制御します。注意
データベースからドキュメントを取得する前に、カーソルに
readPref()
を適用する必要があります。
パラメーター
Parameter | タイプ | 説明 |
---|---|---|
string | 次のの読み取り設定モードのいずれか: | |
ドキュメントの配列 | 任意。 指定されたタグを持つメンバーへの読み取りをターゲットにするために使用されるタグセット。 詳しくは、「読み込み設定(read preference)のタグセット リスト」を参照してください。 | |
ドキュメント | 重要: MongoDB8.0 以降、ヘッジされた読み取りは非推奨になっています。読み込み設定( 読み込み設定 (read preference) ) 任意。 ヘッジの使用を有効にするかどうかを指定するドキュメント。
|
readPref()
は、読み込み設定(read preference)の 読み込み設定(read preference maxStalenessSeconds
オプションをサポートしていません。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
例
読み込み設定(read preference)モードを指定する
次の操作では、 読み込み設定(read preference)モードを使用して、セカンダリ メンバーへの読み取りをターゲットにします。
db.collection.find({ }).readPref( "secondary")
読み込み設定(read preference)のタグセットを指定する
特定のタグを持つセカンダリを対象とするには、モードとtagsSet配列の両方を含めます。
db.collection.find({ }).readPref( "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 は適格なセカンダリを使用します。
詳しくは、「タグの一致順序」を参照してください。
ヘッジされた読み取りを指定する
シャーディングされたクラスターでは、非プライマリ 読み込み設定( read preference ) に ヘッジされ た読み取りを有効にできます。ヘッジされた読み取りを使用するには、 mongos
にヘッジされた読み取り用のenabled support
(デフォルト)と、 primary
以外の 読み込み設定( read preference ) でヘッジされた読み取りの使用が有効になっている必要があります。
ヘッジされた読み取りを使用してシャーディングされたクラスター上のセカンダリを対象とするには、次の例のようにモードとhedgeOptionsの両方を含めます。
タグセットなし
db.collection.find({ }).readPref( "secondary", // mode null, // tag set { enabled: true } // hedge options ) タグセットあり
db.collection.find({ }).readPref( "secondary", // mode [ { "datacenter": "B" }, { } ], // tag set { enabled: true } // hedge options )