我正在尝试将集合从一台 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 }
但是 my_db
数据库未在 host1 上创建。我尝试创建空数据库,但集合也没有被复制。我尝试在其中创建空集合,但集合项目未复制。
注意:host2 上的 my_db.my_collection
不为空。已经仔细检查过了。
伙计们,您能检查一下 db.cloneCollection()
在 mongo 2.4.6 上是否适用吗?
如果是这样 - 也许我缺少一些先决条件?
最佳答案
Windows 版 Mongodb,v 2.4.6
第一个 mongod
具有默认参数:端口 -> 27017,dbpath -> c:\data\db
第二个 mongod ,参数为:端口 -> 27018,dbpath -> c:\data\db1
登录到第二个 mongod。使用测试
数据库。执行:
db.cloneCollection("localhost:27017","db.test.so000")
未克隆。然后执行:
db.cloneCollection("localhost:27017","so000")
它被克隆了。因此,在这种情况下建议 - 不要使用集合的完整路径。
已更新
刚刚调查了一些文档:http://docs.mongodb.org/manual/reference/command/cloneCollection/#dbcmd.cloneCollection
如果你想使用 db 前缀,你应该这样运行克隆:
db.runCommand({cloneCollection: "test.so000", from: "localhost:27017"})
它也会克隆集合 so000
。即使第二台服务器上不存在 db test
,它也会创建 db。
关于mongodb - Mongo : db. cloneCollection 在 2.4.6 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19030576/