我可以进行 mongodb 数据备份,但我不确定 mongodb Schama 备份。 有没有办法只转储 MONGODB 模式而不转储数据?
你需要使用 mongorestore... 它用于导入 json 或 csv 等。
您可以在下面的文档中阅读有关 mongorestore 的更多信息;我会看一下并阅读它们,因为它们非常有帮助。
http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongorestore
您还可以查看 http://learnmongo.com 获取提示和帮助! 或者您可以访问链接
如何使用mongodump转储的数据?希望对您有所帮助。
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":"[email protected]"},
{ "_id":5, "name":"ABCD", "age":29, "emailId":"[email protected]"}]);
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" : "[email protected]" }
{ "_id" : 5, "name" : "ABCD", "age" : 29, "emailId" : "[email protected]" }
查找模式的方法
In Mongo Shell
var k = db.mycollection.findOne();
for ( i in k){print (i)};
_id
name
如果您集合中的所有文档都遵循相同的架构,则此方法将适合您。
我是这样做的:
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
如果有更好的方法可以做到这一点,我很想知道它是什么!
MongoDB Compass GUI 有一种将架构导出为 JSON 的方法。
在撰写本文时,似乎没有办法批量执行此操作,因此必须对每个集合逐一执行此操作。
来自文档:
您可以在分析后导出您的架构。这对于 共享您的架构并比较不同集合的架构。
如果您还没有这样做,请分析您的模式:
选择您所需的集合并单击Schema选项卡。点击 分析架构。
分析完您的架构后,导出您的架构:
在顶部菜单栏中,单击收藏。从下拉列表中,单击共享 架构为 JSON。
您的架构将作为 JSON 对象复制到剪贴板。
在此处查看完整文档〜https://www.mongodb.com/docs/compass/master/schema/export/
对于大多数备份场景,您可以同时恢复数据、索引和其他元数据。但是,对于某些本地开发场景,我可以想象只想恢复索引和其他元数据,以便您可以创建一些示例数据。 (如果您使用适用于 MongoDB RU 的 Cosmos DB API 进行定期备份,这也很有帮助,其中只能在添加任何文档之前创建唯一索引。)
为此,只需进行正常备份,然后从目录中删除
.bson
文件即可。这将留下 .metadata.json
文件,其中包含索引和其他元数据。例如,在 Mac/Linux 上您可以执行以下操作:
mongodump --out=dumpdir
rm dumpdir/*/*.bson
然后您可以通过在此目录上运行正常恢复来恢复索引和其他元数据:
mongorestore dumpdir