有什么简单的方法吗?
当前回答
实际上,有一个命令用于将集合从一个数据库移动到另一个数据库。它只是不叫“移动”或“复制”。
若要复制集合,可以在同一数据库上克隆它,然后移动克隆的集合。
克隆:
> use db1
switched to db 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'
}
);
其他答案更适合复制集合,但如果您希望移动集合,这个答案尤其有用。
其他回答
我通常会这样做:
use sourcedatabase;
var docs=db.sourcetable.find();
use targetdatabase;
docs.forEach(function(doc) { db.targettable.insert(doc); });
我会滥用mongo cli mongo doc中的连接功能。这意味着您可以启动一个或多个连接。 如果您想将客户集合从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或主机名即可连接到远程服务器。我使用它将测试数据复制到测试数据库进行测试。
使用“Studio3T for MongoDB” 通过单击数据库,集合或特定的集合具有导出和导入工具 下载链接:https://studio3t.com/download/
你可以随时使用Robomongo。从v0.8.3开始,有一个工具可以通过右键单击集合并选择“将集合复制到数据库”来完成此操作。
具体操作请参见http://blog.robomongo.org/whats-new-in-robomongo-0-8-3/
由于这个特性在0.8.5版本中被移除,所以如果你想尝试的话,你将不得不使用0.8.3或0.8.4。
最好的方法是先做一个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中的现有数据将被保留。这样,您就可以将一个集合从一个数据库“附加”到另一个数据库。
在版本2.4.3之前,您还需要在复制数据后添加回索引。从2.4.3开始,这个过程是自动的,您可以使用——noIndexRestore禁用它。
推荐文章
- JSON文件的蒙古导入
- 如何删除mongodb中的数组元素?
- 修改MongoDB数据存储目录
- 在MongoDB中查找重复的记录
- 为什么MongoDB Java驱动在条件中使用随机数生成器?
- 在猫鼬,我如何排序的日期?(node . js)
- 将映像存储在MongoDB数据库中
- 重复Mongo ObjectId的可能性在两个不同的集合中生成?
- Redis比mongoDB快多少?
- 无法连接到服务器127.0.0.1:27017
- 如何创建数据库的MongoDB转储?
- 如何将MongoDB作为Windows服务运行?
- 如何监听MongoDB集合的变化?
- 如何在猫鼬排序?
- js的Mongoose.js字符串到ObjectId函数