【问题标题】:how to set read Preference secondary using mongoclient in nodejs mongodb driver?如何在nodejs mongodb驱动程序中使用mongoclient设置读取偏好辅助?
【发布时间】:2016-07-04 12:47:01
【问题描述】:

我正在使用 mongodb 副本集。我有以下配置:

{
"members": [
      {
        "host": "db1.example.com",
        "port": "27017"
      },
      {
        "host": "db2.example.com",
        "port": "27017"            
      }
    ]    
}

我正在使用以下 nodejs 代码连接数据库名称 myapplicationDb:

使用 mongodb 驱动程序版本 1.4.38。

var MongoClient = require('mongodb').MongoClient;
var Server = require('mongodb').Server;

var url = 'mongodb://';
    var options = {
        server: {
            slaveOk: true,
            readPreference: Server.READ_SECONDARY,
            socketOptions: {"connectTimeoutMS": 30000}
        },
        db: {
            readPreference: Server.READ_SECONDARY
        },
        replSet: {
            rs_name: "replicaName",
            readPreference: Server.READ_SECONDARY
        }
    }
    members.forEach(function (member) {
        url = url + member.host + ':' + member.port + ','
    });
    url = url.substring(0, url.length - 1);
    url += '/' + "myapplicationDb";
    MongoClient.connect(url, options, function (err, db) {

   console.log("db >>>>>>>>", db);

});

我想将阅读偏好设置为次要。

但所有读取操作都在主数据库上执行。 如何设置?

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    这段代码解决了我的问题:

    var MongoClient = require('mongodb').MongoClient;
    var Server = require('mongodb').Server;
    
    var url = 'mongodb://';
    var options = {
        //server: {
        //    slaveOk: true,
        //    readPreference: Server.READ_SECONDARY,
        //    socketOptions: {"connectTimeoutMS": 30000}
        //},
        //db: {
        //    readPreference: Server.READ_SECONDARY
        //},
        //replSet: {
        //    rs_name: "replicaName",
        //    readPreference: Server.READ_SECONDARY
        //}
    }
    members.forEach(function (member) {
        url = url + member.host + ':' + member.port + ','
    });
    url = url.substring(0, url.length - 1);
    url += '/' + "myapplicationDb";
    url = url + "?replicaSet=replicaName&readPreference=secondaryPreferred&connectTimeoutMS=30000"
    MongoClient.connect(url, options, function (err, db) {
    
        console.log("db >>>>>>>>", db);
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2018-06-19
      • 2012-11-11
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多