1

我正在尝试编写一个连接到两个数据库的 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/ ) 但这不起作用。

4

1 回答 1

2

我没有副本集来测试它,但我认为你可以像这样使用 Mongo() 构造函数

conn = Mongo("replicasetname/host:port")

从那里我认为你需要手动获取数据库

db = conn.getDB("myDatabase")

然后进行身份验证

db.auth(user, pass)

这也可能取决于您使用的 shell 版本。我没有看到任何关于在最新版本中使用副本集连接的文档,所以我不知道它是否已被弃用或不再提及。希望这可以帮助。

于 2015-07-09T01:27:23.157 回答