如何在MongoDB中连接两个数据库服务器并从两个集合生成报告并加入它们?

时间:2017-12-21 16:21:31

标签: javascript mongodb

我有两个MongoDB数据库服务器,我需要生成报告,连接两个集合,这两个集合驻留在两个不同的数据库服务器中。请告诉我如何在javascript上进行操作。

1 个答案:

答案 0 :(得分:0)

您可以从两个数据库服务器加入两个集合,如下所示:

服务器:S1,数据库D1,集合:C1,用户:User1           S2数据库D2集合:C2用户:User2

您需要编写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)
                                          }
                        });
 
   })

运行程序Passing Server 1参数:

mongo -host Server_name Database_name program_name&gt; OUTPUT_FILE

mongo -host S1 D1 Connect_two_database_servers.js&gt; citizen_opt_out2.out

我希望这会有所帮助。