可见issue:
https://jira.mongodb.org/browse/SERVER-48769
如题,mongo shell不会解析连接串中的readPreference参数。
比如:
启动一个mongo shell,在URI中设置readPreference=secondary的。提示符显示它连接到主服务器。
./mongo "mongodb://xxx@xxxx@host1:27017,host2:27017,host3:27017/admin?replicaSet=replSet1&authsource=admin&poolSize=10&connectTimeoutMS=300000&readPreference=secondary"
replSet1:PRIMARY>
即尽管连接字符串根据文档指定了读取优先级“secondary”,但shell未能连接到Seconcary。
那么使用mongo shell,我应该怎么将查询路由到从库呢?
方法:
1、使用cursor.readPref()。将readPref()追加到游标上,以控制客户端如何将具体某个查询路由到复制集的成员。
示例:
db.collection.find({ }).readPref( "secondary")
2、使用Mongo.setReadPref()。使用在Mongo连接对象上调用setReadPref()方法来控制客户端如何将所有查询路由到复制集的成员。
db.getMongo().setReadPref("secondary")