如何在mongoose中设置mongodb副本集读取首选项?

时间:2015-11-11 08:52:38

标签: node.js mongodb

我使用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设置。我已经尝试了很多方法,但到目前为止还没有运气。任何人都可以给我一个提示?

1 个答案:

答案 0 :(得分:6)

readPreference: 'nearest'表示客户端将ping连接上的所有副本集成员,并将所有将来的读取解决为响应速度最快的成员。 MongoDB客户端通常不会随机切换主要和次要。

如果您希望他们从辅助电子阅读,请使用readPreference: 'secondaryPreferred'