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

  • 我使用 flapdoodle 作为 springboot 的嵌入式 mongo。这工作正常,但是,我需要手动将数据放入其中。
  • 对于使用 mongo db 的 Junit 测试,我使用 nosqlunit 。这对 Fongo(Fake mongo)非常有效。它支持从 json 文件读取数据并在启动期间用数据预填充数据库。但这仅适用于 junit,因为这是一个 JUnit 扩展。

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

    最佳答案

    您也可以为此使用 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 一样,它还维护模式版本表,因此相同的更改集不会在相同的环境中再次运行。

    关于mongodb - Spring boot 嵌入式 MongoDb 数据预填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43341331/

    10-09 20:19
    查看更多