MongoDB Documentation, Release 3.0.4 Although nearest (page 658) already favors members with low network latency, including the tag makes the choice more predictable. Reduce load on the primary To shift read load from the primary, use mode secondary (page 658). Although secondaryPreferred (page 658) is tempting for this use case, it carries some risk: if all secondaries are unavail- able and your set has enough arbiters to prevent the primary from stepping down, then the primary will receive all traffic from clients. If the primary is unable to handle this load, queries will compete with writes. For this reason, use secondary (page 658) to distribute read load to replica sets, not secondaryPreferred (page 658). Because some database commands read and return data from the database, all of the official drivers support full read preference mode semantics (page 657) for the following commands: Read Preferences for Database Commands • group • mapReduce 28 • aggregate 29 • collStats • dbStats • count • distinct • geoNear • geoSearch • geoWalk • parallelCollectionScan New in version 2.4: mongos adds support for routing commands to shards using read preferences. Previously mongos sent all commands to shards’ primaries. 28 Only “inline” mapReduce operations that do not write data support read preference, otherwise these operations must run on the primary members. 29 Using the $out pipeline operator forces the aggregation pipeline to run on the primary. 660 Chapter 9. Replication