読み取り設定は次のとおりです。
- プライマリ :クエリはレプリカセットのプライマリに送信されます。
- 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を手動で変更する必要があることに注意してください。