2

我正在尝试将一个集合从一个 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上创建的。我试图创建空数据库,但集合也没有被复制。我试图在其中创建空集合,但集合项没有被复制。

注意:my_db.my_collectionhost2 上的不为空。已经仔细检查过了。

伙计们,您能否检查一下db.cloneCollection()在 mongo 2.4.6 上是否适合您?如果是这样-也许我缺少一些先决条件?

4

1 回答 1

3

适用于 Windows 的 Mongodb,v 2.4.6

首先mongod使用默认参数:port -> 27017, dbpath -> c:\data\db
第二个mongod使用参数:port -> 27018, dbpath -> c:\data\db1

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

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。即使test第二台服务器上不存在 db,它也会创建 db。

于 2013-09-26T14:26:30.010 回答