我正在尝试将一个集合从一个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()
是否对你有用吗?
如果是这样 - 也许我错过了一些先决条件?
答案 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。