如何获取mongodb架构转储

时间:2017-02-07 07:52:20

标签: mongodb schema backup

我可以采取mongodb数据备份,但我不确定mongodb schama备份。 有没有办法只转储MONGODB模式而不是数据?

3 个答案:

答案 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

如果有更好的方法可以做到这一点,我很想知道它是什么!