Die Leseeinstellungen lauten wie folgt:
- PRIMÄR :Abfragen werden an den primären Replikatsatz gesendet.
- PRIMARY_PREFERRED :Anfragen werden an den primären gesendet, falls verfügbar, andernfalls an einen sekundären.
- SEKUNDÄRE :Abfragen werden auf Secondaries verteilt. Wenn keine Secondaries verfügbar sind, wird ein Fehler ausgelöst.
- SECONDARY_PREFERRED :Abfragen werden auf Secondarys oder den Primary verteilt, falls kein Secondary verfügbar ist.
- NÄCHSTER :Anfragen werden an alle Mitglieder verteilt.
Also gibt es nein speziell für die nächste zweitrangig. Sie könnten dies erreichen, indem Sie NEAREST und tag_sets kombinieren und Tagging der Secondaries.
Dann, wenn die Secondaries getaggt wurden {'secondaries': 1}
Sie können von der nächsten Sekundärseite wie folgt lesen:
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}]
Aktualisierung:
Sie sollten beachten, dass Sie, wenn eine Wahl stattfindet und sich die Topologie Ihres Replikats ändert, die tag_sets manuell ändern müssten, um die neuen Secondaries darzustellen.