连接到 mongo shell 中的副本集
Posted
技术标签:
【中文标题】连接到 mongo shell 中的副本集【英文标题】:Connect to replica set within mongo shell 【发布时间】:2015-09-26 19:20:24 【问题描述】:我正在尝试编写一个连接两个数据库的 Mongo shell 脚本,在一个数据库中搜索一些文档,然后将找到的文档插入到另一个数据库中。有点像这样:
#!/bin/sh
mongo --shell --nodb <<EOF
var db1 = new Mongo( '...' );
var db2 = new Mongo( '...' );
db1.collection.findOne( ... ).forEach( function( r )
db2.collection.save( r )
);
诀窍是,两个数据库都是副本集,并且需要用户名和密码。
使用new Mongo()
连接到副本集并以特定用户身份进行身份验证的语法是什么?我尝试使用 Mongo URI (http://docs.mongodb.org/manual/reference/connection-string/),但没有成功。
【问题讨论】:
【参考方案1】:我没有副本集来测试它,但我认为你可以像这样使用 Mongo() 构造函数
conn = Mongo("replicasetname/host:port")
我认为您需要手动获取数据库
db = conn.getDB("myDatabase")
然后进行身份验证
db.auth(user, pass)
这也可能取决于您使用的 shell 版本。我没有看到任何关于在最新版本中使用副本集连接的文档,所以我不知道它是否已被弃用或不再提及。希望这可以帮助。
【讨论】:
很高兴它成功了。您可能还想尝试一下。Mongo("host:port/?replicaSet=name")
这似乎是现在连接到副本的记录方式。以上是关于连接到 mongo shell 中的副本集的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 连接到运行的 mongo 容器的 MongoDB 副本集