Javascript 如何连接MongoDB中的两个数据库服务器,并从两个集合生成一个报告并将它们连接起来?

Javascript 如何连接MongoDB中的两个数据库服务器,并从两个集合生成一个报告并将它们连接起来?,javascript,mongodb,Javascript,Mongodb,我有两个MongoDB数据库服务器,我需要生成连接两个集合的报告,这两个集合驻留在两个不同的数据库服务器中。请告诉我如何在javascript上执行此操作。您可以从两个数据库服务器加入两个集合,如下所示: Cat Connect_two_database_servers.js var rmtConn = new Mongo("<Server_name:S2>:<port>"); // remote host name & port rmtConn.

我有两个MongoDB数据库服务器,我需要生成连接两个集合的报告,这两个集合驻留在两个不同的数据库服务器中。请告诉我如何在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)
                                          }
                        });
 
   })
服务器: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)
                                          }
                        });
 
   })
Cat Connect\u two\u database\u servers.js
var rmtConn=new Mongo(“:”);//远程主机名和端口
rmtConn.setLaveOK();
var rmtDB=rmtConn.getDB(“D2”);//远程数据库名称
rmtDB.auth(“,”);//远程用户和密码
斯莱沃克先生()
打印(“组织ID”+“/”+“过滤器ID”+“/”+“规则”)
//从本地数据库进行查询
db..find({organizationId:{$in:
[133261238783181345300308561134013326123878318144530030856113394953003085611341892807736721744]},状态:“A”}(
功能(过滤器){
打印(filter.organizationId+“/”+filter.\u id+“/”+“无过滤器”+“/”+filter.name)
//进行远程数据库调用
rmtDB..find({“\u id”:filter.\u id}).forEach(
函数(bctemplate){
var val1=.broadcastContacts.FilterId
if(val1[0]){
打印(filter.organizationId+“/”+filter.\u id+“/”+val1[0]。valueOf()+“/”+filter.name)
}其他{
打印(filter.organizationId+“/”+filter.\u id+“/”+“无过滤器”+“/”+filter.name)
                                          }
                        });
 
})
运行传递服务器1参数的程序:

mongo-主机服务器\u名称数据库\u名称程序\u名称>输出\u文件

mongo-主机S1 D1 Connect_two_database_servers.js>citizen_opt_out2.out


我希望这会有所帮助。

首先,您不能真正加入MongoDB,因为它是一个非关系数据库。更不用说加入来自两个不同服务器的集合了。总的来说,这对我来说很难。因此,您可以创建两个到两个服务器的连接,并从一个服务器获取材料,然后使用它构建到t的单独的第二个查询他是另一个。这里没有真正的魔力。“加入”逻辑是你的javascript代码。这个node.js吗?它工作得很好。非常感谢。我等了很久了。