Läsinställningarna är som följer:
- PRIMÄR :Förfrågningar skickas till replikuppsättningens primära.
- PRIMARY_PREFERRED :Förfrågningar skickas till den primära om den är tillgänglig, annars en sekundär.
- SEKUNDÄR :Frågor fördelas mellan sekundärer. Ett fel uppstår om inga sekundärer är tillgängliga.
- SECONDARY_PREFERRED :Frågor fördelas mellan sekundärer, eller den primära om ingen sekundär är tillgänglig.
- NÄRST :Frågor distribueras bland alla medlemmar.
Så det finns nej specifik för den närmaste sekundär. Du kan uppnå detta genom att kombinera NEAREST och tag_sets och tagga sekundärerna.
Sedan om sekundärerna har taggats {'secondaries': 1}
du kan läsa från närmaste sekundär så här:
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}]
Uppdatering:
Du bör notera att om ett val inträffar och topologin för din replikuppsättning ändras måste du manuellt ändra tag_set för att representera de nya sekundärerna.