如何获取 mongodb 模式转储

问题描述 投票:0回答:5

我可以进行 mongodb 数据备份,但我不确定 mongodb Schama 备份。 有没有办法只转储 MONGODB 模式而不转储数据?

mongodb schema backup
5个回答
3
投票

你需要使用 mongorestore... 它用于导入 json 或 csv 等。

您可以在下面的文档中阅读有关 mongorestore 的更多信息;我会看一下并阅读它们,因为它们非常有帮助。

http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongorestore

您还可以查看 http://learnmongo.com 获取提示和帮助! 或者您可以访问链接

如何使用mongodump转储的数据?希望对您有所帮助。


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":"[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

如果您集合中的所有文档都遵循相同的架构,则此方法将适合您。


1
投票

我是这样做的:

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

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


0
投票

MongoDB Compass GUI 有一种将架构导出为 JSON 的方法。

在撰写本文时,似乎没有办法批量执行此操作,因此必须对每个集合逐一执行此操作。

来自文档:

您可以在分析后导出您的架构。这对于 共享您的架构并比较不同集合的架构。

如果您还没有这样做,请分析您的模式:

选择您所需的集合并单击Schema选项卡。点击 分析架构

分析完您的架构后,导出您的架构:

在顶部菜单栏中,单击收藏。从下拉列表中,单击共享 架构为 JSON。

您的架构将作为 JSON 对象复制到剪贴板。

在此处查看完整文档〜https://www.mongodb.com/docs/compass/master/schema/export/


0
投票

对于大多数备份场景,您可以同时恢复数据、索引和其他元数据。但是,对于某些本地开发场景,我可以想象只想恢复索引和其他元数据,以便您可以创建一些示例数据。 (如果您使用适用于 MongoDB RU 的 Cosmos DB API 进行定期备份,这也很有帮助,其中只能在添加任何文档之前创建唯一索引。)

为此,只需进行正常备份,然后从目录中删除

.bson
文件即可。这将留下
.metadata.json
文件,其中包含索引和其他元数据。例如,在 Mac/Linux 上您可以执行以下操作:

mongodump --out=dumpdir
rm dumpdir/*/*.bson

然后您可以通过在此目录上运行正常恢复来恢复索引和其他元数据:

mongorestore dumpdir

来源:https://stackoverflow.com/a/76625666

© www.soinside.com 2019 - 2024. All rights reserved.