Mongodb.cloneCollection在2.4.6中不起作用?

时间:2013-09-26 14:08:14

标签: mongodb

我正在尝试将一个集合从一个Mongo主机克隆到另一个:

我在两台主机上安装了两个mongo实例v.2.4.6: host1和host2(host1和host2实际上是IP,但用名称替换以简化问题)。两台主机都在同一个网络中,我可以使用以下命令从第一台服务器成功打开其他服务器的mongo控制台:

主机1 上的

mongo --host host2

但是当我在第一台服务器的mongo shell中时:

主机1 上的

db.cloneCollection("host2:27017", "my_db.my_collection")

输出结果为:

{ "ok" : 1 }

但是在host1上没有创建my_db数据库。我试图创建空数据库,但也没有复制该集合。我试图在其中创建空集合,但不会复制集合项。

注意:host2上的my_db.my_collection不为空。有双重检查。

伙计们,请你在mongo 2.4.6上查看db.cloneCollection()是否对你有用吗? 如果是这样 - 也许我错过了一些先决条件?

1 个答案:

答案 0 :(得分:3)

Mongodb for Windows,v 2.4.6

使用默认参数的第一个mongod:port - > 27017,dbpath - > c:\ data \ db
第二个mongod与params:port - > 27018,dbpath - > C:\数据\ DB1

登录到第二个mongod。使用test db。执行:

db.cloneCollection("localhost:27017","db.test.so000")

未克隆。然后执行:

db.cloneCollection("localhost:27017","so000")

它被克隆了。所以,在这种情况下的建议 - 不要使用完整的收集路径。

<强>更新

刚刚调查了一些文档:http://docs.mongodb.org/manual/reference/command/cloneCollection/#dbcmd.cloneCollection
如果要使用db前缀,则应以这种方式运行clone:

db.runCommand({cloneCollection: "test.so000", from: "localhost:27017"})

它也会克隆集合so000。即使第二台服务器上不存在db test,它也会创建db。