我有两个MongoDB数据库服务器,我需要生成报告,连接两个集合,这两个集合驻留在两个不同的数据库服务器中。请告诉我如何在javascript上进行操作。
答案 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
我希望这会有所帮助。