Spring 启动嵌入式 MongoDb 数据预填充
Spring boot Embedded MongoDb data prefilled
我想知道是否有像Flyway这样的工具可以帮助mongodb的数据库初始化/迁移。我的一些想法是
- 我已经使用 flapdoodle 作为嵌入式 mongo 和 springboot。这工作正常,但我需要手动将数据放入其中。
- 对于使用 mongo 数据库的 Junit 测试,我使用 nosqlunit。这与 Fongo(Fake mongo) 配合得很好。它支持从 json 文件读取数据并在启动期间用数据预填充数据库。但这仅适用于 junit,因为这是 JUnit 扩展。
我正在寻找的是上述两者的混合,一个嵌入式 mongo,它不仅适用于 JUnit,而且可以预填充来自给定 json 的数据(类似于 V1__init.sql 在飞路中)
有没有这样的工具?
最后,我为 Mongo 开发了这个简单版本的数据预填充。这是代码。
https://github.com/pvpkiran/mongoprefill
给定种子数据,此自动配置填满 mongo。
您也可以为此使用 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"/>
现在添加变更集 class
@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 一样,它也维护模式版本 table,因此相同的更改集不会在相同的环境中再次 运行。
您可以在测试期间使用 flapdoodle
导入 JSON 数据
在此处查看类似问题的答案:使用 Spring 嵌入式数据 Mongo 在 Mongo 数据库中导入 JSON 文件
我想知道是否有像Flyway这样的工具可以帮助mongodb的数据库初始化/迁移。我的一些想法是
- 我已经使用 flapdoodle 作为嵌入式 mongo 和 springboot。这工作正常,但我需要手动将数据放入其中。
- 对于使用 mongo 数据库的 Junit 测试,我使用 nosqlunit。这与 Fongo(Fake mongo) 配合得很好。它支持从 json 文件读取数据并在启动期间用数据预填充数据库。但这仅适用于 junit,因为这是 JUnit 扩展。
我正在寻找的是上述两者的混合,一个嵌入式 mongo,它不仅适用于 JUnit,而且可以预填充来自给定 json 的数据(类似于 V1__init.sql 在飞路中)
有没有这样的工具?
最后,我为 Mongo 开发了这个简单版本的数据预填充。这是代码。
https://github.com/pvpkiran/mongoprefill
给定种子数据,此自动配置填满 mongo。
您也可以为此使用 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"/>
现在添加变更集 class
@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 一样,它也维护模式版本 table,因此相同的更改集不会在相同的环境中再次 运行。
您可以在测试期间使用 flapdoodle
导入 JSON 数据在此处查看类似问题的答案:使用 Spring 嵌入式数据 Mongo 在 Mongo 数据库中导入 JSON 文件