我需要一个工具,用于在预先创建正确的数据库名称、集合、设置集合上限并为每个集合创建索引的环境之间,快速重新创建MongoDB实例的正确“模式”(例如,它是这样的)。不过,我不想在实例之间复制所有数据。我管理的每个环境都有不同的数据,但DB/collection/caps/indexes都是相同的。有没有一种简单的方法可以做到这一点,最好是有一个工具可以导出所有名称、大写和索引的JSON文档,然后可以重新导入到新的实例中?
发布于 2016-09-08 03:48:29
在我没有找到合适的工具后,我转储了数据库并恢复了它,没有数据,所以恢复了元数据(特别是所有的集合都是用适当的索引创建的),但是集合是空的。这也可以应用于包含数据的数据库,因此如果没有冲突,将在现有数据库上创建索引。
1.使用mongodump进行转储
2.清空集合的数据
find ./dump -name '*bson' -type f -exec cp /dev/null {} \;
3.使用mongorestore将数据恢复到新的数据库
发布于 2015-06-30 00:47:15
有一次,我也遇到了同样的问题。我所做的是一组JS文件,我必须在每个环境上手动运行它们(mongo可以评估脚本)。这些文件中有数据,所以我必须小心地管理它们,以免引入重复/损坏现有数据。
但是,我发现迁移工具对这类任务非常有帮助。我最喜欢This one,但也有many other solutions。
把你的变化想象成不可变的事件流。例如:为了删除之前创建的索引,您创建了新的更改(迁移),这将删除它。您将该流作为一组文件存储在您的VCS中,因此为新环境设置非常简单(mm migrate和您的基础是最新的!)为项目新手准备的。此外,当您使用容器或VM时,这种方法非常有用:通常,您可以基于容器/VM生命周期触发脚本,从而自动填充DB,从而轻松地重新启动/重新创建。
发布于 2018-07-19 14:01:32
我今天写了一些东西来说明这一点。导出只是使用API方法在所选数据库的集合上调用list_indexes()和options()。导入将创建数据库,并使用索引和选项创建集合。
https://github.com/JonnoFTW/mongo-schema-export
它会生成一个文件,您可以使用该文件在另一个数据库上设置索引、caps和验证器。
https://stackoverflow.com/questions/31120237
复制相似问题