Les préférences de lecture sont les suivantes :
- PRIMAIRE : les requêtes sont envoyées au primaire du jeu de réplicas.
- PRIMARY_PREFERRED :Les requêtes sont envoyées au primaire si disponible, sinon un secondaire.
- SECONDAIRE :Les requêtes sont réparties entre les secondaires. Une erreur est générée si aucun secondaire n'est disponible.
- SECONDARY_PREFERRED :Les requêtes sont réparties entre les secondaires, ou le principal si aucun secondaire n'est disponible.
- LE PLUS PROCHE : les requêtes sont réparties entre tous les membres.
Donc il n'y a non spécifique pour le plus proche secondaire. Vous pouvez y parvenir en combinant NEAREST et tag_sets et marquer les secondaires.
Ensuite, si les secondaires ont été tagués {'secondaries': 1}
vous pouvez lire à partir du secondaire le plus proche comme ceci :
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}]
Mise à jour :
Vous devez noter que si une élection se produit et que la topologie de votre jeu de répliques change, vous devrez modifier manuellement les ensembles de balises pour représenter les nouveaux secondaires.