是否有连接到两个mongo主机的方法。基本上,我们在两个独立的服务器中有两个mongo数据库。我们需要在第二个的基础上更新第一个中的数据。我们有办法做这个吗
是的,这是可能的,但mongo shell中的许多漂亮语法都不起作用,而且connect函数似乎不处理副本集,所以您需要自己找到主语法。
您可以使用connect
功能建立到多个服务器的连接,例如:
var connection1 = connect("server1:27017")
var connection2 = connect("server2:27017")
但是您将无法使用use
或show
命令或rs
对象。相反,您将需要使用成员函数和数据库命令。
例如,要列出数据库:
connection1.adminCommand("listDatabases")
获取数据库参考:
var mydb = connection1.getSiblingDB("mydbname");
var otherdb = connection2.getSiblingDB("myotherdbname");
查找操作等,然后看起来相当正常:
mydb.collection.find({field: value});
otherdb.collection.insert({newfield: value});
我认为使用mongo-shell
是不可能做到这一点的。只有当Mongo的多个实例位于一个副本集中时,它才能与它们一起工作。
您应该使用Mongo驱动程序创建一个连接到您的Mongos的应用程序(例如,用于JS的mongoose或用于Java的MongoDB驱动程序(,然后根据需要更新您的数据。