我正在尝试使用mongo CLI在MongoLab上的两个不同的数据库之间进行复制。 我按照文档 - http://docs.mongodb.org/manual/reference/method/db.copyDatabase/
进行了操作请尝试以下内容:
db.copyDatabase('source-db','target-db','source-host','source-user','source-pwd')
但我总是得到:
{ "ok" : 0, "errmsg" : "unauthorized" }
答案 0 :(得分:2)
我收到同样的错误,但在尝试复制集合时:
> db.coll1.copyTo("coll2");
Wed Jul 24 13:32:05 uncaught exception: { "ok" : 0, "errmsg" : "unauthorized" }
我的数据库位于MongoHQ管理的共享服务器上,因此肯定存在一些权限问题,即该服务不允许copyTo
或其他命令运行。
一个简单的解决方法是手动获取集合中的所有对象并将它们插入到第二个集合中。这就是copyTo
实施之前的事情:
db.coll1.find().forEach(function(o) { db.coll2.insert(o); });
答案 1 :(得分:1)
您可以使用mongodump和mongorestore命令。
mongodump -h <source_host>:<source_port> -d <source_db> -o ~/tmp/mongodump
mongorestore -h <destination_host>:<destination_port> -d <destination_db> -u <username> -p <password> ~/tmp/mongodump/<source_db>