5

mongoアプリケーションでandを使用しnode.jsています。mongo データベースは 2 つのサーバーで構成されています。

http://howtonode.org/express-mongodbに示されている例では、次を使用して 1 つのサーバーに接続できます。

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(){});
};

しかし、どうすれば複数のサーバーに接続できますか。私の場合、2 つのサーバーがあります。

4

2 に答える 2

15

受け入れられた答えは今ではかなり古いです。それ以来、多くのことが変わりました。接続文字列は次の形式で使用できます。

mongodb://[ユーザー名:パスワード@]ホスト1[:ポート1][,...ホストN[:ポートN]]][/[データベース][?オプション]]

例は次のようになります。

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のサンプル コード 。

指定されたサーバーはシード リストのみです。完全なリストは自動的に検出されます。レプリカ セットのメンバーは静的ではありません。変更されます (新しいサーバーが追加されるか、既存のサーバーが削除される可能性があります)。クライアントは、入力リストで指定されたサーバーの 1 つに接続し、そこからレプリカ セットのメンバーを取得します。したがって、ここにすべてのサーバー アドレスをリストする必要はありません。リストに記載されているサーバーの少なくとも 1 つが稼働していれば、残りは自動的に検出されます。

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 に答える