5

我正在使用mongonode.js在一个应用程序中。mongo 数据库由两台服务器组成。

http://howtonode.org/express-mongodb给出的示例中,我可以使用以下方式连接到一台服务器:

ArticleProvider = function(host, port) {
 var database = 'node-mongo-blog';
 this.db= new Db(database, new Server(host, port, {auto_reconnect: true}, {}));
 this.db.open(function(){});
};

但是如何连接到多个服务器,在我的情况下有两个服务器。

4

2 回答 2

15

现在接受的答案已经很老了。从那以后发生了很多变化。您可以使用以下格式的连接字符串

mongodb://[用户名:密码@]host1[:port1][,...hostN[:portN]]][/[数据库][?options]]

一个示例如下所示:

const { MongoClient } = require('mongodb');

const connectionString = 'mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/admin?replicaSet=myRepl';

MongoClient.connect(connectionString, options).then((client) => {
    const db = client.db('node-mongo-blog');
    // do database things
}).catch((error) => {
    // handle connection errors
});
于 2019-02-28T21:39:26.167 回答
5

来自https://github.com/christkv/node-mongodb-native/blob/master/examples/replSetServersQueries.js的示例代码 。

指定的服务器只是种子列表 - 它会自动发现完整的列表。副本集的成员不是静态的——它们会发生变化(可能会添加新服务器或删除现有服务器)。客户端连接到输入列表中指定的服务器之一,然后从中获取副本集成员。因此,您不必在此处列出所有服务器地址 - 如果列表中提到的至少一台服务器已启动并运行,它将自动找到其余服务器。

var port1 = 27018;
var port2 = 27019;
var server = new Server(host, port, {});
var server1 = new Server(host, port1, {});
var server2 = new Server(host, port2, {});
var servers = new Array();
servers[0] = server2;
servers[1] = server1;
servers[2] = server;

var replStat = new ReplSetServers(servers);
console.log("Connecting to " + host + ":" + port);
console.log("Connecting to " + host1 + ":" + port1);
console.log("Connecting to " + host2 + ":" + port2);
var db = new Db('node-mongo-examples', replStat, {native_parser:true});
于 2012-09-12T10:19:13.060 回答