如何使PyMongo能够从最近的地方读取?这个字段db.read_preference现在是只读的.
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}]发布于 2022-04-11 15:16:17
您需要将其添加到连接字符串,如下所示:
db = ReplicaSetConnection('localhost:27017?readPreference=nearest', replicaSet='rs1')['my_db']或
db = MongoClient("myhost:27017", read_preference=ReadPreference.NEAREST, replicaSet='rs1')['my_db']由于任何原因,您使用的给定语法都会失败,这似乎是支持早期Pymongo版本的语法。
发布于 2022-04-13 05:03:03
PyMongo ReadPreference还可以应用于数据库、集合或查询级别(除了连接字符串URI和MongoClient)。
from pymongo import ReadPreference
# Specifying read preference at database level
db1 = client.testdb1
db2 = client.get_database('testdb2', read_preference=ReadPreference.NEAREST)
# Specifying read preference at collection level
coll2 = db1.coll1.with_options(read_preference=ReadPreference.NEAREST)
# Specifying read preference for a specific query
result = db1.coll1.with_options(read_preference=ReadPreference.NEAREST).find()注意,较低级别上的读取首选项集(例如集合)将覆盖上一层(例如,数据库或mongo客户端)的首选项。
发布于 2022-04-11 15:34:39
选项1(每个连接):
>>> from pymongo import MongoClient, ReadPreference
>>> db = MongoClient("myhost:27017", read_preference=ReadPreference.NEAREST).test
>>> db.collection.find_one({test:1})选项2(每次查询):
>>> db.collection.find_one({test:1},read_preference=ReadPreference.NEAREST)https://stackoverflow.com/questions/71787141
复制相似问题