我可以采取mongodb数据备份,但我不确定mongodb schama备份。 有没有办法只转储MONGODB模式而不是数据?
答案 0 :(得分:3)
您需要使用mongorestore ...用于导入json或csv等内容。
您可以在下面的文档中阅读有关mongorestore的更多信息;我会看一看并阅读它们,因为它们非常有帮助。
http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongorestore
您还可以查看http://learnmongo.com以获取提示和帮助! 或者你可以访问链接
How to use the dumped data by mongodump?希望这可能对您有所帮助。
答案 1 :(得分:3)
MongoDB是一个NoSQL数据库。
任何集合都没有固定的架构,因此mongo shell中没有可用的函数来查找集合架构。
固定架构适用于RDBMS数据库。在NoSQL DB中,例如mongodb,它不是必需的,但如果需要,您可以使用您的实现逻辑强制执行相同的模式。
同一集合中的文档可以是不同的模式。请参阅下面的示例
db.mycollection.insert([
{ "_id":1, "name":"A"},
{ "_id":2, "name":"CD", "age":29},
{ "_id":3, "name":"AB", "age":28},
{ "_id":4, "name":"ABC", "age":27, "emailId":"abc@xyz.com"},
{ "_id":5, "name":"ABCD", "age":29, "emailId":"abcd@xyz.com"}]);
db.mycollection.find();
{ "_id" : 1, "name" : "A" }
{ "_id" : 2, "name" : "CD", "age" : 29 }
{ "_id" : 3, "name" : "AB", "age" : 28 }
{ "_id" : 4, "name" : "ABC", "age" : 27, "emailId" : "abc@xyz.com" }
{ "_id" : 5, "name" : "ABCD", "age" : 29, "emailId" : "abcd@xyz.com" }
查找架构的方法
In Mongo Shell
var k = db.mycollection.findOne();
for ( i in k){print (i)};
_id
name
如果集合中的所有文档都遵循相同的模式,则此方法将适用于您。
答案 2 :(得分:0)
这是我的做法:
mongodump --uri="mongodb://localhost/mydb" -o ./mydb-dump
find ./mydb-dump -name *.bson -exec truncate -s 0 {} \;
说明::我正在转储整个数据库,然后将所有.bson
文件(其中包含集合数据)截断为零字节。
局限性:显然,这仅在源数据库较小的情况下才可行,否则,您将生成巨大的数据转储,只是要丢弃其中的大部分数据。
要还原此-
mongorestore --uri="mongodb://some-other-server/mydb" ./mydb-dump
如果有更好的方法可以做到这一点,我很想知道它是什么!