回答(17)

2 years ago

你可以这样做:

db..find().forEach(function(d){ db.getSiblingDB('')[''].insert(d); });

请注意,有了这个,两个数据库将需要共享相同的mongod才能工作 .

除此之外,您可以从一个数据库执行集合的mongodump,然后将集合mongorestore存储到另一个数据库 .

2 years ago

最好的方法是做一个mongodump然后mongorestore .

您可以通过以下方式选择集合:

mongodump -d some_database -c some_collection

[可选,将转储( zip some_database.zip some_database/* -r )和 scp 压缩到别处]

然后恢复它:

mongorestore -d some_other_db -c some_or_other_collection dump/some_collection.bson

some_or_other_collection 中的现有数据将被保留 . 这样你就可以_A64155_从一个数据库到另一个数据库的集合 .

在2.4.3版之前,您还需要在复制数据后添加索引 . 从2.4.3开始,此过程是自动的,您可以使用 --noIndexRestore 禁用它 .

2 years ago

实际上,有一个命令 move 从一个数据库到另一个数据库的集合 . 它只是没有被称为"move"或"copy" .

要复制集合,可以在同一个db上克隆它,然后移动克隆 .

要克隆:

> use db1

> db.source_collection.find().forEach( function(x){db.collection_copy.insert(x)} );

移动:

> use admin

switched to db admin

> db.runCommand({renameCollection: 'db1.source_collection', to: 'db2.target_collection'}) // who'd think rename could move?

其他答案更适合复制集合,但如果您想要移动它,这尤其有用 .

2 years ago

我会滥用mongo cli mongo doc中的connect函数 . 这意味着您可以启动一个或多个连接 . 如果要将客户集合从test复制到同一服务器中的test2 . 首先你启动mongo shell

use test

var db2 = connect('localhost:27017/test2')

做一个正常的查找并将前20条记录复制到test2 .

db.customer.find().limit(20).forEach(function(p) { db2.customer.insert(p); });

或按某些标准过滤

db.customer.find({"active": 1}).forEach(function(p) { db2.customer.insert(p); });

只需将localhost更改为IP或主机名即可连接到远程服务器 . 我用它将测试数据复制到测试数据库进行测试 .

2 years ago

如果在两个远程mongod实例之间,请使用

{ cloneCollection: "", from: "", query: { }, copyIndexes: }

2 years ago

我通常会这样做:

use sourcedatabase;

var docs=db.sourcetable.find();

use targetdatabase;

docs.forEach(function(doc) { db.targettable.insert(doc); });

2 years ago

我知道这个问题已经得到解答但是我个人不会做@JasonMcCays的回答,因为游标流是这样的,如果仍在使用该集合,这可能会导致无限的游标循环 . 相反,我会使用快照():

@bens答案也是一个很好的答案,适用于集合的热备份,不仅如此,但mongorestore不需要共享相同的mongod .

2 years ago

这可能只是一个特例,但对于包含两个随机字符串字段(长度为15-20个字符)的100k文档的集合,使用愚蠢的mapreduce几乎是find-insert / copyTo的两倍:

db.coll.mapReduce(function() { emit(this._id, this); }, function(k,vs) { return vs[0]; }, { out : "coll2" })

2 years ago

您可以使用聚合框架来解决您的问题

db.oldCollection.aggregate([{$out : "newCollection"}])

需要注意的是,oldCollection中的索引不会复制到newCollection中 .

2 years ago

使用pymongo,你需要在同一个mongod上有两个数据库,我做了以下几点:

db =原始数据库

db2 =要复制到的数据库

cursor = db[""].find()

for data in cursor:

db2[""].insert(data)

2 years ago

这不会解决您的问题,但mongodb shell有一个copyTo方法,可以将一个集合复制到同一个数据库中的另一个集合:

db.mycoll.copyTo('my_other_collection');

它也从BSON转换为JSON,所以 mongodump / mongorestore 是最好的方式,正如其他人所说的那样 .

2 years ago

如果一些heroku用户在这里绊倒并且像我一样想要将一些数据从登台数据库复制到 生产环境 数据库,反之亦然,这就是你如何非常方便地做到这一点(我希望那里没有拼写错误,无法检查atm . ,我会尽快确认代码的有效性):

to_app="The name of the app you want to migrate data to"

from_app="The name of the app you want to migrate data from"

collection="the collection you want to copy"

mongohq_url=`heroku config:get --app "$to_app" MONGOHQ_URL`

parts=(`echo $mongohq_url | sed "s_mongodb://heroku:__" | sed "s_[@/]_ _g"`)

to_token=${parts[0]}; to_url=${parts[1]}; to_db=${parts[2]}

mongohq_url=`heroku config:get --app "$from_app" MONGOHQ_URL`

parts=(`echo $mongohq_url | sed "s_mongodb://heroku:__" | sed "s_[@/]_ _g"`)

from_token=${parts[0]}; from_url=${parts[1]}; from_db=${parts[2]}

mongodump -h "$from_url" -u heroku -d "$from_db" -p"$from_token" -c "$collection" -o col_dump

mongorestore -h "$prod_url" -u heroku -d "$to_app" -p"$to_token" --dir col_dump/"$col_dump"/$collection".bson -c "$collection"

2 years ago

你总是可以使用Robomongo . 从v0.8.3开始,有一个工具可以通过右键单击集合并选择“将集合复制到数据库”来完成此操作

这个功能由于它的错误特性而removed in 0.8.5所以如果你想尝试它,你将不得不使用0.8.3或0.8.4 .

2 years ago

如果RAM不是问题,使用 insertMany 比 forEach 循环更快 .

var db1 = connect(':/')

var db2 = connect(':/')

var _list = db1.getCollection('collection_to_copy_from').find({})

db2.collection_to_copy_to.insertMany(_list.toArray())

2 years ago

对于大尺寸的集合,你可以使用Bulk.insert()

var bulk = db.getSiblingDB(dbName)[targetCollectionName].initializeUnorderedBulkOp();

db.getCollection(sourceCollectionName).find().forEach(function (d) {

bulk.insert(d);

});

bulk.execute();

这将节省 a lot of time . 在我的情况下,我正在使用1219个文件复制集合:iter vs Bulk(67秒vs 3秒)

2 years ago

这可以使用Mongo的 db.copyDatabase 方法完成:

db.copyDatabase(fromdb, todb, fromhost, username, password)

2 years ago

就我而言,我必须在新集合中使用旧集合中的一部分属性 . 所以我在调用新集合上的insert时最终选择了这些属性 .

db..find().forEach(function(doc) {

db..insert({

"new_field1":doc.field1,

"new_field2":doc.field2,

....

})

});`

.db怎么复制到java里_如何在MongoDB中将集合从一个数据库复制到另一个数据库相关推荐

  1. safari 获取视频流_如何在Safari中将RSS feed和社交媒体合并为一个流

    safari 获取视频流 Safari allows you to subscribe to RSS feeds and add your social media accounts so you c ...

  2. .db怎么复制到java里_MongoDB如何复制collection里的数据到另一个collection方法总结...

    MongoDB的可以直接复制数据库,但是对于数据库里的表却没有直接的复制语句.在项目中遇到数据放错collection了情况就很棘手,现在将方法总结如下: 1.使用工具Studio 3T for Mo ...

  3. integer java 随机_如何在Java中生成随机BigInteger值?

    我需要生成0(包含)到n(包含)范围内任意大的随机整数.我最初的想法是调用nextDouble并乘以n,但一旦n大于253,结果将不再是均匀分布的. BigInteger具有以下构造函数: publi ...

  4. jsp java 上传图片_如何在Jsp上传图片

    1. 新建一个Dynamic Web Project: 2. 键入工程名UploadImage: 3. 选择Dynamic web module version :2.5 4. 点击"Fin ...

  5. cmd中加载java源文件_如何在cmd中编译和运行java源文件

    如何在cmd中编译和运行java源文件 首先写一个名为HelloWorld.java的java源文件,存储在如C:/java/src的地址,我们再假设待会要存储的位置是C:/java/bin,则我们做 ...

  6. java中将查询数据导出_如何在R中将数据框导出到Excel

    java中将查询数据导出 What if I tell, that you can export data frames to excel in R within a couple of minute ...

  7. Java乐谱_如何在java中创建一个简单但结构良好的乐谱表(乐谱)?

    我正在使用非常基本的声音合成在我的游戏中创建音频和效果.基本上,我有一些方法可以发出一个频率和频率的声音.幅度和幅度持续时间. 对于短语和旋律,我想提出一个基本的符号,这样我就可以轻松地重写或添加新的 ...

  8. mongodb 字段检索_如何在MongoDB中创建,检索,更新和删除记录

    mongodb 字段检索 介绍 (Introduction) MongoDB is a free and open-source NoSQL document database used common ...

  9. eclipse 配置java路径_如何在eclipse的配置文件里指定jdk路径

    运行eclipse时报如下错误: 在eclipse的配置文件里指定jdk路径,只需在eclipse的配置文件里增加-vm参数即可. 打开eclipse目录下的eclipse.ini配置文件,增加-vm ...

最新文章

  1. 28 数组中出现次数超过一半的数MoreThanHalfNum输入一个一维数组
  2. eve模拟器_EVE-NG,不仅仅是一款网络模拟软件,更是虚拟仿真环境
  3. CTF-web-xff,referer 知识点;
  4. Apache Doris : 一个开源 MPP 数据库的架构与实践
  5. 关于asp.net中partial,asp.net编译笔记
  6. 服务器网卡的Teaming技术
  7. 数学之美_正态分布(详解)
  8. 关于线程池的一段代码
  9. java1.6安装_JAVAjdk1.6安装方法
  10. 网络营销之百度营销技巧(一) 百度知道推广日常手册
  11. 基于javaweb+jsp的超市便利店管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap Ajax)
  12. MATLAB矩阵运算部分知识总结
  13. 天气预报接口使用及示例
  14. ctypes 指针类型 byref pointer POINTER
  15. python append 字典_Python3中使用append添加字典元素出现问题
  16. Java笔试面试-设计模式
  17. c语言mac地址加冒号,如何通过在Excel中添加冒号来格式化单元格中的mac地址?
  18. Apache Kylin 之 初介绍
  19. 南宁漏水检测:热烈祝贺广西中水荣获广西首届著名品牌
  20. android传感器介绍

热门文章

  1. 世界范围内糖化血红蛋白报告的3种建议形式
  2. 三类测量血压原理 - 智能手环测血压原理详解
  3. Java中对List集合api展示
  4. 机械考计算机三级,机器人等级考试三级知识点汇总-20210706222922.pdf-原创力文档...
  5. html 流程控制,HTML5独家分享:原生JS学习笔记2——程序流程控制
  6. [Unity2018.3新功能]Prefab嵌套和变体
  7. Python 真的勒死 R 了吗?
  8. springBoot的一些注解以及静态资源的处理
  9. 隐藏a标签seo_百度SEO网站整体优化方案 - 蜘蛛池博客
  10. eclipse git 取远程代码_IDEA中的Git操作,看这一篇就够了!