Preferencje czytania są następujące:
- PODSTAWOWA :Zapytania są wysyłane do podstawowego zestawu replik.
- PRIMARY_PREFERRED :Zapytania są wysyłane do głównego, jeśli jest dostępne, w przeciwnym razie drugorzędnego.
- DODATKOWE :Zapytania są dystrybuowane wśród drugorzędnych. Jeśli nie ma dostępnych plików pomocniczych, pojawia się błąd.
- SECONDARY_PREFERRED :zapytania są dystrybuowane między drugorzędnymi lub podstawowymi, jeśli nie są dostępne żadne drugorzędne.
- NAJBLIŻSZE :Zapytania są dystrybuowane wśród wszystkich członków.
Więc nie ma nie konkretna dla najbliższych wtórny. Możesz to osiągnąć, łącząc NEAREST i tag_sets i tagowanie drugorzędnych.
Następnie, jeśli wtórne zostały oznaczone {'secondaries': 1}
możesz czytać z najbliższego wtórnego w ten sposób:
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}]
Aktualizacja:
Należy pamiętać, że jeśli nastąpi wybór i zmieni się topologia zestawu replik, trzeba będzie ręcznie zmienić tag_sets, aby reprezentować nowe elementy pomocnicze.