Configuring Read Concerns

1. Using local Read Concern

AspectDetail
Default for primary readsLatest local data
DurabilityNot guaranteed; data may be rolled back

2. Using available Read Concern

AspectDetail
Default for secondaryLowest latency
ShardedMay return orphans (no shard version check)

3. Using majority Read Concern

GuaranteeDetail
VisibilityOnly data acknowledged by majority
DurableWill not be rolled back
CostSlight latency for snapshot resolution

4. Using linearizable Read Concern

AspectDetail
GuaranteeReflects all majority-committed writes before read started
RestrictionOnly on primary, single-doc reads
CostHigher; performs no-op write to majority

5. Using snapshot Read Concern

AspectDetail
Use inMulti-document transactions
GuaranteeReads from single point-in-time snapshot
Outside txnAvailable on mongos for analytical reads

6. Understanding Read Concern Levels

LevelVisibilityDurability
localLatestNo
availableLatest (sharded fast)No
majorityMajority-committedYes
linearizableReal-timeYes
snapshotSnapshot at cluster timeYes

7. Setting Read Concern in Operations

APIExample
findfind().readConcern({level:"majority"})
aggregatePass readConcern in options
SessionDefault for ops in the session

8. Combining Read Concern with Read Preference

ComboUse Case
majority + primaryStrongly consistent
majority + secondaryPreferredRead scale + durability
local + secondaryLowest latency, may be stale

9. Using Read Concern with Transactions

AllowedDetail
snapshotMost common
majorityDefault if not set
localAllowed; fastest, weaker consistency

10. Understanding Read Concern Performance

LevelCost
local / availableLowest
majoritySlight; uses storage snapshot
linearizableHighest; round-trips majority
snapshotModerate; opens transaction snapshot