4

我想知道是否有像Flyway这样的工具可以帮助 mongodb 进行数据库初始化/迁移。我的一些想法是

  1. 我已经将fladdoodle用作带有springboot的嵌入式mongo。这工作正常,但我需要手动将数据放入其中。
  2. 对于使用 mongo db 的 Junit 测试,我使用nosqlunit。这与 Fongo(假 mongo)完美配合。它支持从 json 文件中读取数据并在启动期间用数据预填充数据库。但这仅适用于 junit,因为这是一个 JUnit 扩展。

我正在寻找的是上述两者的混合,一个嵌入式 mongo,它不仅可以与 JUnit 一起使用,还可以从给定的 json 预填充数据(类似于 Flyway 中的 V1__init.sql)
有没有这样的工具?

4

3 回答 3

6

您也可以为此使用 Mongobee。如果在应用程序加载时运行您的变更集。

Maven依赖

 <dependency>
    <groupId>com.github.mongobee</groupId>
    <artifactId>mongobee</artifactId>
</dependency>

您需要在上下文 xml 文件中为 Mongobee 创建 bean

<bean id="mongobee" class="com.github.mongobee.Mongobee">
<constructor-arg ref="mongo"/>
<property name="dbName" value="${mongo.databaseName}"/>
<property name="enabled" value="true"/>
<property name="changeLogsScanPackage" value="basepackagewherechangesetispresent"/>

现在添加变更集类

@ChangeLog(order = "1")
public class DatabaseChangeLog {

 @ChangeSet(order = "101", id = "somelogicalnameforthischangeset", author = "nameofpersonwhodidthischange")
 public void setupSeedData(MongoTemplate mongoTemplate) { 
    // run your datasetup, prefill,migration here.
 }

和flyway一样,它也维护了schema版本表,所以相同的变更集不会在相同的环境中再次运行。

于 2018-02-13T18:54:28.563 回答
1

最后,我为 Mongo 开发了这个简单的数据预填充版本。这是代码。

https://github.com/pvpkiran/mongoprefill

给定种子数据,此自动配置会填满 mongo。

于 2017-12-11T14:23:54.060 回答
-1

您可以在测试期间使用fladdoodle导入 JSON 数据

在此处查看类似问题的答案:Import JSON file in Mongo db using Spring Data Embedded Mongo

于 2018-06-07T12:02:29.120 回答