我有一个副本集,主要/次要和读取首选项为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) {
答案 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' }
);