有没有简单的方法可以做到这一点?
发布于 2012-07-19 14:13:50
目前,在MongoDB中还没有命令可以做到这一点。请注意JIRA ticket with related feature request。
你可以这样做:
db.<collection_name>.find().forEach(function(d){ db.getSiblingDB('<new_database>')['<collection_name>'].insert(d); });
请注意,有了这个,两个数据库需要共享相同的神灵才能正常工作。
除此之外,您还可以对一个数据库中的集合执行mongodump操作,然后将集合mongodump恢复到另一个数据库。
发布于 2012-07-19 14:09:43
最好的方法是先做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
禁用它。
发布于 2012-07-31 09:54:40
我会滥用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或主机名即可连接到远程服务器。我使用它将测试数据复制到测试数据库中进行测试。
https://stackoverflow.com/questions/11554762
复制相似问题