De leesvoorkeuren zijn als volgt:
- PRIMAIR :Query's worden verzonden naar de primaire van de replicaset.
- PRIMARY_PREFERRED :Query's worden verzonden naar de primaire indien beschikbaar, anders een secundaire.
- SECUNDAIR :Query's worden verdeeld onder secundairen. Er wordt een fout gegenereerd als er geen secundaire bronnen beschikbaar zijn.
- SECONDARY_PREFERRED :Query's worden verdeeld onder secundairen, of de primaire als er geen secundaire beschikbaar is.
- DICHTBIJ :Query's worden verdeeld onder alle leden.
Dus er is nee specifiek voor de dichtstbijzijnde ondergeschikt. U kunt dit bereiken door NEAREST en tag_sets te combineren en taggen van de secundairen.
Als de secundairen zijn getagd {'secondaries': 1}
je kunt zo lezen van de dichtstbijzijnde secundaire:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]
Bijwerken:
Houd er rekening mee dat als er een verkiezing plaatsvindt en de topologie van uw replicaset verandert, u de tag_sets handmatig moet wijzigen om de nieuwe secondaries weer te geven.