Docs Menu

cursor.readPref()

項目一覧

cursor.readPref(mode, tagSet, hedgeOptions)

重要

mongosh メソッド

これはmongoshメソッドです。 これは、 Node.jsまたはその他のプログラミング言語固有のドライバー メソッドのドキュメントではありません

ほとんどの場合、 mongoshメソッドはレガシーのmongo shell メソッドと同じように動作します。 ただし、一部のレガシー メソッドはmongoshでは利用できません。

レガシーmongo shell のドキュメントについては、対応する MongoDB Server リリースのドキュメントを参照してください。

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

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

注意

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

Parameter
タイプ
説明

string

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

ドキュメントの配列

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

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

ドキュメント

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

{ enabled: <boolean> }

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

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

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

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

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

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

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

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

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

次の操作では、 読み込み設定(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 は適格なセカンダリを使用します。

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

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

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

項目一覧