Configuring Read Preferences

1. Setting Read Preference

ModeBehavior
primary (default)Always primary
primaryPreferredPrimary, else secondary
secondaryOnly secondary
secondaryPreferredSecondary, else primary
nearestLowest latency member

2. Using primaryPreferred Mode

Use CaseDetail
Read availabilityFalls back to secondary if primary down
ConsistencyReads usually fresh; stale during failover

3. Using secondaryPreferred Mode

Use CaseDetail
Offload readsReduce primary load
CaveatSecondary lag → stale reads

4. Using nearest Mode

AspectDetail
SelectionLowest ping within latency window (15ms default)
Geo-distributed appsReads from same region

5. Using Read Preference Tags

AspectDetail
FormreadPreference=secondary&readPreferenceTags=region:us-east
Multiple setsTried in order
SetupTags configured per member in rs.conf()

6. Setting maxStalenessSeconds

AspectDetail
PurposeLimit acceptable lag (90s minimum)
EffectSkip members lagging more than threshold
Not with primaryOnly secondary modes

7. Understanding Read Preference Behavior

StageDetail
Server selectionTopology check + mode filter + tags + staleness
Latency windowfastest + localThresholdMS (default 15ms)
Random pickAmong eligible servers

8. Using Read Preference with Transactions

RuleDetail
All readsMust target primary (or "primary" RP)
Driver enforcesOverride RP in txn options if needed

9. Configuring Read Preference in Connection String

OptionExample
readPreferencesecondaryPreferred
readPreferenceTagsregion:us-east,role:analytics
maxStalenessSeconds90

10. Handling Read Preference Failover

ScenarioBehavior
Primary lostprimaryPreferred/secondaryPreferred fall back
All members downServerSelectionTimeoutError after timeout
RetryRetryable reads (default on) re-select server