我使用mongoose连接mongo(v3.04)副本集,我想将所有请求传播到set中的所有节点。但是,在完成以下操作之后,我的辅助设备从未被命中,我的连接字符串和选项如下:
let connectionString = 'mongodb://ip1:27017/db, ip2:27017/db';
mongoose.connect(connectionString, {
server: {
socketOptions: {keepAlive: 1},
readPreference: "nearest",
strategy: "ping"
},
replset: {
rs_name: 'ReplicaSet',
socketOptions: {keepAlive: 1},
strategy: 'ping',
readPreference: 'nearest',
poolSize: 10
}
});
看起来mongoose完全忽略了我传递的readPreference设置。我已经尝试了很多方法,但到目前为止还没有运气。任何人都可以给我一个提示?
答案 0 :(得分:6)
readPreference: 'nearest'
表示客户端将ping连接上的所有副本集成员,并将所有将来的读取解决为响应速度最快的成员。 MongoDB客户端通常不会随机切换主要和次要。
如果您希望他们从辅助电子阅读,请使用readPreference: 'secondaryPreferred'
。