mongodb - Mongo : db. cloneCollection 在 2.4.6 中不起作用?

标签 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 }

但是 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/

相关文章:

javascript - 一种更优雅的方式来处理 Angular 应用程序中的过滤值

Mongodb全文搜索匹配精度

javascript - 查询 MongoDB 的数据范围

mongodb - Mongo $set 在更新时删除对象中的其他字段

javascript - Heroku "Process exited with status 137"node.js 应用程序

java - 使用 MongoDB、Java 和 Jongo 创建动态查询

mongodb - 获取文档的特定部分

node.js - 连接到 Azure : Illegal character in password with mongoose 5. 0.1 时出错,但在 4.13.9 中有效

php - 在mongodb的嵌套数组中插入数据

mongodb - 在不删除或覆盖现有字段的情况下更新 meteor 集合