有什么简单的方法吗?
当前回答
我知道这个问题已经被回答了,但我个人不会做@JasonMcCays的回答,因为光标流的事实,这可能会导致无限的游标循环,如果集合仍在使用。相反,我将使用snapshot():
http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database
@bens的回答也很好,不仅适用于集合的热备份,而且mongorestore不需要共享同一个mongod。
其他回答
目前,MongoDB中还没有这样的命令。请注意带有相关功能请求的JIRA票据。
你可以这样做:
db.<collection_name>.find().forEach(function(d){ db.getSiblingDB('<new_database>')['<collection_name>'].insert(d); });
请注意,在这种情况下,两个数据库需要共享同一个mongod才能正常工作。
除此之外,您还可以从一个数据库对一个集合进行mongodump,然后再将该集合恢复到另一个数据库。
这并不能解决你的问题,但是mongodb shell有一个copyTo方法,可以将一个集合复制到同一个数据库中的另一个集合:
db.mycoll.copyTo('my_other_collection');
它还可以从BSON转换为JSON,所以mongodb /mongorestore是最好的方式,就像其他人说的那样。
在MongoDB中将一个集合(myCollection1)从一个数据库复制到另一个数据库,
**Server1:**
myHost1.com
myDbUser1
myDbPasword1
myDb1
myCollection1
outputfile:
myfile.json
**Server2:**
myHost2.com
myDbUser2
myDbPasword2
myDb2
myCollection2
你可以这样做:
mongoexport --host myHost1.com --db myDb1 -u myDbUser1 -p myDbPasword1 --collection myCollection1 --out myfile.json
然后:
mongoimport --host myHost2.com --db myDb2 -u myDbUser2 -p myDbPasword2 --collection myCollection2 --file myfile.json
另一种情况,使用CSV文件:
Server1:
myHost1.com
myDbUser1
myDbPasword1
myDb1
myCollection1
fields.txt
fieldName1
fieldName2
outputfile:
myfile.csv
Server2:
myHost2.com
myDbUser2
myDbPasword2
myDb2
myCollection2
你可以这样做:
mongoexport --host myHost1.com --db myDb1 -u myDbUser1 -p myDbPasword1 --collection myCollection1 --out myfile.csv --type=csv
在CSV文件中添加列类型(name1.decimal(),name1.string()..),然后:
mongoimport --host myHost2.com --db myDb2 -u myDbUser2 -p myDbPasword2 --collection myCollection2 --file myfile.csv --type csv --headerline --columnsHaveTypes
你可以随时使用Robomongo。从v0.8.3开始,有一个工具可以通过右键单击集合并选择“将集合复制到数据库”来完成此操作。
具体操作请参见http://blog.robomongo.org/whats-new-in-robomongo-0-8-3/
由于这个特性在0.8.5版本中被移除,所以如果你想尝试的话,你将不得不使用0.8.3或0.8.4。
使用“Studio3T for MongoDB” 通过单击数据库,集合或特定的集合具有导出和导入工具 下载链接:https://studio3t.com/download/
推荐文章
- 无法连接到服务器127.0.0.1:27017
- 如何创建数据库的MongoDB转储?
- 如何将MongoDB作为Windows服务运行?
- 如何监听MongoDB集合的变化?
- 如何在猫鼬排序?
- js的Mongoose.js字符串到ObjectId函数
- mongodb中使用ISODate的日期查询似乎无法正常工作
- 如何更新文档数组中的对象(嵌套更新)
- 在猫鼬模式中添加created_at和updated_at字段
- 如何更新mongodb中的多个数组元素
- MongoDB和Mongoose的区别
- MongoDB在v4之前不兼容ACID意味着什么?
- 显示所有集合中的所有内容
- MongoDB:更新一个字段上的每个文档
- 我如何在MongoDB中部分更新一个对象,以便新对象将覆盖/合并现有的一个