Javascript 如何连接MongoDB中的两个数据库服务器,并从两个集合生成一个报告并将它们连接起来?
我有两个MongoDB数据库服务器,我需要生成连接两个集合的报告,这两个集合驻留在两个不同的数据库服务器中。请告诉我如何在javascript上执行此操作。您可以从两个数据库服务器加入两个集合,如下所示: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.
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吗?它工作得很好。非常感谢。我等了很久了。