.db怎么复制到java里_如何在MongoDB中将集合从一个数据库复制到另一个数据库
回答(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中将集合从一个数据库复制到另一个数据库相关推荐
- safari 获取视频流_如何在Safari中将RSS feed和社交媒体合并为一个流
safari 获取视频流 Safari allows you to subscribe to RSS feeds and add your social media accounts so you c ...
- .db怎么复制到java里_MongoDB如何复制collection里的数据到另一个collection方法总结...
MongoDB的可以直接复制数据库,但是对于数据库里的表却没有直接的复制语句.在项目中遇到数据放错collection了情况就很棘手,现在将方法总结如下: 1.使用工具Studio 3T for Mo ...
- integer java 随机_如何在Java中生成随机BigInteger值?
我需要生成0(包含)到n(包含)范围内任意大的随机整数.我最初的想法是调用nextDouble并乘以n,但一旦n大于253,结果将不再是均匀分布的. BigInteger具有以下构造函数: publi ...
- jsp java 上传图片_如何在Jsp上传图片
1. 新建一个Dynamic Web Project: 2. 键入工程名UploadImage: 3. 选择Dynamic web module version :2.5 4. 点击"Fin ...
- cmd中加载java源文件_如何在cmd中编译和运行java源文件
如何在cmd中编译和运行java源文件 首先写一个名为HelloWorld.java的java源文件,存储在如C:/java/src的地址,我们再假设待会要存储的位置是C:/java/bin,则我们做 ...
- java中将查询数据导出_如何在R中将数据框导出到Excel
java中将查询数据导出 What if I tell, that you can export data frames to excel in R within a couple of minute ...
- Java乐谱_如何在java中创建一个简单但结构良好的乐谱表(乐谱)?
我正在使用非常基本的声音合成在我的游戏中创建音频和效果.基本上,我有一些方法可以发出一个频率和频率的声音.幅度和幅度持续时间. 对于短语和旋律,我想提出一个基本的符号,这样我就可以轻松地重写或添加新的 ...
- mongodb 字段检索_如何在MongoDB中创建,检索,更新和删除记录
mongodb 字段检索 介绍 (Introduction) MongoDB is a free and open-source NoSQL document database used common ...
- eclipse 配置java路径_如何在eclipse的配置文件里指定jdk路径
运行eclipse时报如下错误: 在eclipse的配置文件里指定jdk路径,只需在eclipse的配置文件里增加-vm参数即可. 打开eclipse目录下的eclipse.ini配置文件,增加-vm ...
最新文章
- 28 数组中出现次数超过一半的数MoreThanHalfNum输入一个一维数组
- eve模拟器_EVE-NG,不仅仅是一款网络模拟软件,更是虚拟仿真环境
- CTF-web-xff,referer 知识点;
- Apache Doris : 一个开源 MPP 数据库的架构与实践
- 关于asp.net中partial,asp.net编译笔记
- 服务器网卡的Teaming技术
- 数学之美_正态分布(详解)
- 关于线程池的一段代码
- java1.6安装_JAVAjdk1.6安装方法
- 网络营销之百度营销技巧(一) 百度知道推广日常手册
- 基于javaweb+jsp的超市便利店管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap Ajax)
- MATLAB矩阵运算部分知识总结
- 天气预报接口使用及示例
- ctypes 指针类型 byref pointer POINTER
- python append 字典_Python3中使用append添加字典元素出现问题
- Java笔试面试-设计模式
- c语言mac地址加冒号,如何通过在Excel中添加冒号来格式化单元格中的mac地址?
- Apache Kylin 之 初介绍
- 南宁漏水检测:热烈祝贺广西中水荣获广西首届著名品牌
- android传感器介绍
热门文章
- 世界范围内糖化血红蛋白报告的3种建议形式
- 三类测量血压原理 - 智能手环测血压原理详解
- Java中对List集合api展示
- 机械考计算机三级,机器人等级考试三级知识点汇总-20210706222922.pdf-原创力文档...
- html 流程控制,HTML5独家分享:原生JS学习笔记2——程序流程控制
- [Unity2018.3新功能]Prefab嵌套和变体
- Python 真的勒死 R 了吗?
- springBoot的一些注解以及静态资源的处理
- 隐藏a标签seo_百度SEO网站整体优化方案 - 蜘蛛池博客
- eclipse git 取远程代码_IDEA中的Git操作,看这一篇就够了!