MongoDB db.copyDatabase在未经授权的情况下失败

时间:2013-05-31 10:12:49

标签: mongodb

我正在尝试使用mongo CLI在MongoLab上的两个不同的数据库之间进行复制。 我按照文档 - http://docs.mongodb.org/manual/reference/method/db.copyDatabase/

进行了操作
  1. 已连接到目标数据库。
  2. 请尝试以下内容:

    db.copyDatabase('source-db','target-db','source-host','source-user','source-pwd')

  3. 但我总是得到:

    { "ok" : 0, "errmsg" : "unauthorized" }
    

2 个答案:

答案 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>
相关问题