Mongo.setReadPref()
On this page
Definition
Mongo.setReadPref(mode, tagSet, hedgeOptions)
Call the
setReadPref()
method on aMongo
connection object to control how the client will route all queries to members of the replica set. [1]Note
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. |
Parameters
Parameter | Type | Description |
---|---|---|
string | One of the following read preference modes: | |
array of documents | Optional. A tag set used to target reads to
members with the specified tag(s). For details, see Read Preference Tag Set Lists. | |
document | Optional. A document that specifies whether to enable the use of hedged reads:
The Hedged reads are available starting in MongoDB 4.4 for sharded
clusters. To use hedged reads, the Read preference New in version 4.4. |
Mongo.setReadPref()
does not support the
Read Preference maxStalenessSeconds
option for read
preference.
Examples
Specify Read Preference Mode
The following operation sets the read preference mode 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 the mongo shell, the above command does not route queries to a secondary.
Specify Read Preference Tag Set
To target secondaries with specific tags, include both the mode 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.
See also:
Specify Hedged Read
Starting in MongoDB 4.4 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 4.4+ sharded cluster using hedged reads, include both the mode 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 )