2017-12-21 10 views
-1

私は2つのMongoDBデータベースサーバーを持っており、2つの異なるデータベースサーバーにある2つのコレクションを結合するレポートを生成する必要があります。私はjavascriptでそれを行う方法を教えてください。MongoDBで2つのデータベースサーバを接続し、2つのコレクションからレポートを生成して結合するにはどうすればいいですか?

+0

さて、MongoDBは、関係のないデータベースなので、最初はMongoDBに参加できません。 2つの異なるサーバーからコレクションに参加しましょう。全体として、これは私にとっては難しいと思う。 –

+0

したがって、2つのサーバーへの2つの接続を作成し、1つのサーバーから2つの接続を作成し、別の2つ目のクエリを構築することができます。ここには本当の魔法はありません。 "結合"ロジックは、あなたのJavaScriptコードです。このnode.jsですか? –

答えて

0

次のように、2つのデータベース・サーバーからの2つのコレクションに参加することができます。

サーバー:S1、データベースD1、コレクション:C1、ユーザー:ユーザー1 S2データベースD2コレクション:C2ユーザー:User2の

あなたが必要とします2台のデータベース・サーバーを接続し、次のようにコレクションに参加するためにJavascriptを書き込むために:

Cat Connect_two_database_servers.js 
    var rmtConn = new Mongo("<Server_name:S2>:<port>"); // remote host name & port 
    rmtConn.setSlaveOk(); 
    var rmtDB = rmtConn.getDB(“D2”);  // remote db name 
    rmtDB.auth(“<User1>“, "<password>"); // Remote User and Password 
    rs.slaveOk() 
    print("Organization ID" +"/"+ "Filter ID" +"/"+ "Rules") 
    // Make a query from local database 
    db.<Collection_name:C1>.find({organizationId: { $in: 
     [1332612387831813,453003085611340,1332612387831814,453003085611339,453003085611341,892807736721744]}, status: "A"}).forEach(
        function(filter){ 
                                  print(filter.organizationId +"/"+ filter._id +"/" +" No Fllter " +"/" + filter.name) 
       // Make Remote database Call 
               rmtDB.<Collection_name: C2>.find({"_id":filter._id}).forEach(
                    function(bctemplate){ 
                              var val1 =  <Collection_name:C1>.broadcastContacts.filterIds 
                              if (val1[0]){ 
                                          print(filter.organizationId +"/"+ filter._id +"/" + val1[0].valueOf() +"/"+ filter.name) 
                                          } else { 
                                                print(filter.organizationId +"/"+ filter._id +"/" +" No Fllter " +"/" + filter.name) 
                                          } 
                        }); 
  
    }) 

は、サーバ1つのパラメータを渡すプログラムを実行します。

モンゴ-hostサーバー名データベース名program_nameの>

citizen_opt_out2.out

モンゴ-host S1 D1 Connect_two_database_servers.js> OUTPUT_FILE私はこれが役立つことを願っています。

+0

素晴らしいです。どうもありがとう。私はこれを長い間待っていた。 –

関連する問題