Предпочитанията за четене са както следва:
- ОСНОВЕН :Заявките се изпращат до основния на набора реплики.
- PRIMARY_PREFERRED :Заявките се изпращат до основния, ако има такъв, в противен случай до вторичен.
- ВТОРИЧЕН :Заявките се разпределят между вторичните. Появява се грешка, ако няма налични вторични.
- SECONDARY_PREFERRED :Заявките се разпределят между вторични или първични, ако няма налични вторични.
- НАЙ-БЛИЗКИ :Запитванията се разпределят между всички членове.
Така че нема специфичен за най-близкия втори. Можете да постигнете това чрез комбиниране на NEAREST и tag_sets и маркиране на вторичните.
След това, ако вторичните са маркирани {'secondaries': 1}
можете да четете от най-близкия вторичен елемент така:
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}]
Актуализация:
Трябва да имате предвид, че ако настъпи избор и топологията на вашия набор от реплики се промени, тогава ще трябва ръчно да промените tag_sets, за да представляват новите вторични.