Docs Menu

Mongo.setReadPref()

이 페이지의 내용

Mongo.setReadPref(mode, tagSet, hedgeOptions)

Call the setReadPref() method on a Mongo connection object to control how the client will route all queries to members of the replica set. [1]

참고

You must call Mongo.setReadPref() on the connection object before retrieving documents using that connection to use that read preference.

[1] To apply a read preference for a specific query or queries, you can apply cursor.readPref() to a cursor before iteration. See cursor.readPref() for details.
Parameter
유형
설명

문자열

문서 배열

Optional. A tag set used to target reads to members with the specified tag(s). tagSet is not available if using read preference mode primary.

For details, see Read Preference Tag Set Lists.

문서

Optional. A document that specifies whether to enable the use of hedged reads:

{ enabled: <boolean> }

The enabled field defaults to true; i.e. specifying an empty document { } is equivalent to specifying { enabled: true }.

Hedged reads are available for sharded clusters. To use hedged reads, the mongos must have enabled support for hedged reads (the default) and the non-primary read preferences must enable the use of hedged reads.

Read preference nearest enables the use of hedged reads on sharded clusters by default; i.e. by default, has { enabled: true }.

Mongo.setReadPref() does not support the 읽기 설정 maxStalenessSeconds option for read preference.

이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

Mongo.setReadPref() has the following behavior.

Starting in mongosh 2.0, db.runCommand() ignores any global read preferences added through the connection string or by using the Mongo.setReadPref() method. To specify the desired read preference, use the options argument when calling db.runCommand().

The following operation sets the read preference 모드 to target the read to a secondary member. This implicitly allows reads from secondaries.

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

However, if called while connected to the primary using mongosh, the above command does not route queries to a secondary.

To target secondaries with specific tags, include both the 모드 and the tagSet array:

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
]
)

During the secondary selection process, MongoDB tries to find secondary members with the datacenter: "B" tag first.

  • If found, MongoDB limits the eligible secondaries to those with the datacenter: "B" tag and ignores the remaining tags.

  • If none are found, then, MongoDB tries to find secondary members with the "region": "West" tag.

    • If found, MongoDB limits the eligible secondaries to those with the "region": "West" tag.

    • If none are found, MongoDB uses any eligible secondaries.

See Order of Tag Matching for details.

다음도 참조하세요.

For sharded clusters, you can enable hedged reads for non-primary read preferences. To use hedged reads, the mongos must have enabled support for hedged reads (the default) and the non-primary read preferences must enable the use of hedged reads.

To target secondaries on sharded clusters using hedged reads, include both the 모드 and the hedgeOptions, as in the following examples:

  • Without a tag set

    db.getMongo().setReadPref(
    "secondary", // mode
    null, // tag set
    { enabled: true } // hedge options
    )
  • With a tag set

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

이 페이지의 내용