Spring Data:使用 Mongock 轻松迁移 MongoDB

21-06-12 banq

Mongock是类似于 Flyway 或 Liquibase 等对 MongoDB 数据库架构进行修改,这是一个开源 Java MongoDB 工具。
将最新版本的 Mongock 的 bom 导入您的 pom 文件。您可以在此处查看最新版本 。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.github.cloudyrock.mongock</groupId>
            <artifactId>mongock-bom</artifactId>
            <version>4.3.8</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>


增加runner和驱动依赖:

<dependency>
    <groupId>com.github.cloudyrock.mongock</groupId>
    <artifactId>mongock-spring-v5</artifactId>
</dependency>
<dependency>
    <groupId>com.github.cloudyrock.mongock</groupId>
    <artifactId>mongodb-springdata-v3-driver</artifactId>
</dependency>


成功导入必要的依赖后,有两种方法可以在我们的项目中激活 Mongock。大多数情况下,在使用Spring框架时,最简单方便的方式就是注解方式。但是,有时您不使用 Spring 或者您需要对 Mongock bean 进行更多控制。在这种情况下,您应该采用传统的构建器方法。
我们在项目中选择了注释方法。
  • 将@EnableMongock注释添加到主类。
  • 将您的 changeLog 包路径添加到您的属性文件( application.yml) 中。它是一个数组,因此您可以添加多个。

ChangeLogs 是迁移类。它们包含ChangeSets,这是实际执行迁移的方法。
要告诉 Mongock 运行迁移,您需要:
  1. 用@ChangeLog 注释changeLog类 @ChangeLog。
  2. 用@ChangeSet 注释changeSet方法。 

Mongock 提供了应用变更集的不同方式。在我们的例子中,我们使用 Spring Data Repository 将数据保存到数据库中。有关详细信息,请参阅文档
运行应用程序并检查日志,该日志清楚地向我们显示迁移脚本已执行。
完整的源代码可以在GitHub