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

cursor.readPref()

項目一覧

  • 定義
cursor.readPref(mode, tagSet, hedgeOptions)

重要

mongosh メソッド

このページでは、 mongosh メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

カーソルにreadPref()を追加して、クライアントがレプリカセットのノードにクエリをルーティングする方法を制御します。

注意

データベースからドキュメントを取得する前に、カーソルにreadPref()を適用する必要があります。

Parameter
タイプ
説明
string

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

ドキュメントの配列

任意。 指定されたタグを持つメンバーへの読み取りをターゲットにするために使用されるタグセットtagSetは使用できませんprimary

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

ドキュメント

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

任意。 ヘッジの使用を有効にするかどうかを指定するドキュメント。

{ enabled: <boolean> }

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

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

次の操作では、 読み込み設定(read preference)モードを使用して、セカンダリ メンバーへの読み取りをターゲットにします。

db.collection.find({ }).readPref( "secondary")

特定のタグを持つセカンダリを対象とするには、モード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 は適格なセカンダリを使用します。

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

Tip

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

シャーディングされたクラスターでは、非プライマリ 読み込み設定( 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
    )

戻る

cursor.readConcern

項目一覧