पढ़ने की प्राथमिकताएं इस प्रकार हैं:
- प्राथमिक :प्रतिकृति सेट के प्राथमिक को प्रश्न भेजे जाते हैं।
- 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}]
अपडेट करें:
आपको ध्यान देना चाहिए कि यदि कोई चुनाव होता है और आपके रेप्लिकासेट की टोपोलॉजी बदल जाती है तो आपको नई सेकेंडरी का प्रतिनिधित्व करने के लिए टैग_सेट को मैन्युअल रूप से बदलना होगा।