MongoDB + Nodejs读取不是以reppreference为NEAREST的replicaset成员分布的

时间:2013-02-11 18:43:01

标签: mongodb

我有一个副本集,主要/次要和读取首选项为NEAREST。通过 MongoStat ,我可以看到请求将转到运行mongod实例和nodejs的副本集成员,而不是其他aws实例上的其他成员。两者之间未启用Ping。我还可以通过更改读取首选项来验证是否可以访问其他实例。与我的Java客户端一起正常工作。另一个实例是否可以ping通读共享? SecondaryAcceptableLatencyMS设置为500。 以下是我尝试执行的示例代码段。

var replSet = new ReplSetServers( [
    new Server( "localhost", 27017, { auto_reconnect: true, native_parser: true, slaveOk: true } ),
    new Server( "<replmem1>", 27017, { auto_reconnect: true, native_parser: true, slaveOk: true } ),
    new Server( "<replmem2>", 27018, { auto_reconnect: true, native_parser: true, slaveOk: true } )
  ],
  {read_secondary:true, secondaryAcceptableLatencyMS:500 }
);


var dbCon = new Db("emails_" + postParams["campaign_id"], replSet, {safe: true, readPreference: mongo.ReadPreference.NEAREST});
    dbCon.open(function(err, db) {

1 个答案:

答案 0 :(得分:2)

它没有很好地记录,但在使用NEAREST时必须指定strategy选项。

var replSet = new ReplSetServers( [
    new Server( "localhost", 27017, { auto_reconnect: true, native_parser: true, slaveOk: true } ),
    new Server( "<replmem1>", 27017, { auto_reconnect: true, native_parser: true, slaveOk: true } ),
    new Server( "<replmem2>", 27018, { auto_reconnect: true, native_parser: true, slaveOk: true } )
  ],
  {read_secondary:true, secondaryAcceptableLatencyMS:500, stragegy: 'ping' }
);

http://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences