MongoDB导入/导出索引

时间:2015-06-29 15:55:10

标签: mongodb

我需要一个工具,用于在预先创建正确的数据库名称,集合,设置集合上限的环境之间快速重新创建MongoDB实例的正确“模式”(例如它),并为每个集合创建索引。不过,我不想复制实例之间的所有数据。我管理的每个env都有不同的数据,但DB / collection / caps / index都是相同的。有没有一种简单的方法可以做到这一点,最好是一个导出所有名称,大写和索引的JSON文档的工具,然后可以将其重新导入到新实例中?

3 个答案:

答案 0 :(得分:3)

在我找不到任何合适的工具之后,我转储数据库并在没有数据的情况下恢复它,因此恢复了元数据(特别是所有集合都是使用适当的索引创建的),但是集合是空的。这也可以应用于包含数据的数据库,因此如果没有冲突,将在现有数据库上创建索引。

1.使用mongodump

进行转储

2.清空馆藏数据

find ./dump -name '*bson' -type f -exec cp /dev/null {} \;

3.使用mongorestore

将数据恢复到新数据库

答案 1 :(得分:1)

有一次,我也有同样的问题。我所做的是一组JS文件,我必须在每个env上手动运行(mongo可以评估脚本)。这些文件里面有数据,所以我必须小心管理它们,不要引入重复/损坏的现有数据。

但是,我发现迁移工具对这些任务非常有帮助。我最喜欢This one,但有many other solutions

将您的变化视为不可变事件的流。例如:为了删除先前创建的索引,您将创建新的更改(迁移),从而删除它。您将该流存储为VCS中的一组文件,因此对于项目中的新人来说,新环境的设置非常简单(mm migrate并且您的基础是最新的!)。此外,当您使用容器或VM时,此方法非常有用:通常,您可以基于容器/ VM生命周期触发脚本,从而自动填充DB,使重启/重新创建变得轻松。

答案 2 :(得分:0)

我今天只是写了些东西。导出仅使用API​​方法在选定数据库的集合上调用list_indexes()options()。导入将创建数据库,并使用索引和选项创建集合。

https://github.com/JonnoFTW/mongo-schema-export

它生成一个文件,可用于在另一个数据库上设置索引,大写和验证器。