首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MongoDB中将集合从一个数据库复制到另一个数据库

如何在MongoDB中将集合从一个数据库复制到另一个数据库
EN

Stack Overflow用户
提问于 2012-07-19 13:58:52
回答 17查看 210.4K关注 0票数 260

有没有简单的方法可以做到这一点?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2012-07-19 14:13:50

目前,在MongoDB中还没有命令可以做到这一点。请注意JIRA ticket with related feature request

你可以这样做:

代码语言:javascript
运行
复制
db.<collection_name>.find().forEach(function(d){ db.getSiblingDB('<new_database>')['<collection_name>'].insert(d); });

请注意,有了这个,两个数据库需要共享相同的神灵才能正常工作。

除此之外,您还可以对一个数据库中的集合执行mongodump操作,然后将集合mongodump恢复到另一个数据库。

票数 245
EN

Stack Overflow用户

发布于 2012-07-19 14:09:43

最好的方法是先做mongodump,然后做mongorestore。您可以通过以下方式选择集合:

代码语言:javascript
运行
复制
mongodump -d some_database -c some_collection

或者,将转储文件(zip some_database.zip some_database/* -r)压缩并将其scp到其他位置

然后恢复它:

代码语言:javascript
运行
复制
mongorestore -d some_other_db -c some_or_other_collection dump/some_collection.bson

some_or_other_collection中的现有数据将被保留。这样,您就可以将集合从一个数据库“追加”到另一个数据库。

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

票数 337
EN

Stack Overflow用户

发布于 2012-07-31 09:54:40

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

代码语言:javascript
运行
复制
use test
var db2 = connect('localhost:27017/test2')

执行常规查找并将前20条记录复制到test2。

代码语言:javascript
运行
复制
db.customer.find().limit(20).forEach(function(p) { db2.customer.insert(p); });

或根据某些条件进行过滤

代码语言:javascript
运行
复制
db.customer.find({"active": 1}).forEach(function(p) { db2.customer.insert(p); });

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

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11554762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档