Læsepræferencerne er som følger:
- PRIMÆR :Forespørgsler sendes til det primære i replikasættet.
- PRIMARY_PREFERRED :Forespørgsler sendes til den primære, hvis den er tilgængelig, ellers en sekundær.
- SEKUNDÆR :Forespørgsler er fordelt mellem sekundære. Der opstår en fejl, hvis ingen sekundærer er tilgængelige.
- SECONDARY_PREFERRED :Forespørgsler er fordelt mellem sekundære eller primære, hvis der ikke er nogen sekundær tilgængelig.
- NÆRMESTE :Forespørgsler fordeles blandt alle medlemmer.
Så der er nej specifik for den nærmeste sekundær. Du kan opnå dette ved at kombinere NEAREST og tag_sets og tagging af sekundærerne.
Hvis sekundærerne er blevet tagget {'secondaries': 1}
du kan læse fra den nærmeste sekundær sådan:
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}]
Opdatering:
Du skal bemærke, at hvis et valg finder sted, og topologien af dit replikasæt ændrer sig, skal du manuelt ændre tag_sets for at repræsentere de nye sekundære.