Spring boot Embedded MongoDb данные предварительно заполнены
Я хочу знать, есть ли какие-либо инструменты, такие как Flyway, которые могут помочь в инициализации / миграции базы данных для mongodb. Некоторые мысли у меня были
- Я использовал flapdoodle в качестве встроенного монго с Springboot. Это работает нормально, но мне нужно вручную вставить данные в него.
- Для тестов Junit с mongo db я использую nosqlunit. Это прекрасно работает с Fongo(Fake Mongo). Он поддерживает чтение данных из файла json и предварительное заполнение базы данных данными во время запуска. Но это работает только с junit, так как это расширение JUnit.
То, что я ищу, это сочетание обоих вышеперечисленных, встроенного монго, которое работает не только с JUnit и может предварительно заполнять данные из данного json(аналогично V1__init.sql в Flyway)
Есть ли такой инструмент?
3 ответа
Наконец, я разработал эту простую версию предварительного заполнения данных для Mongo. Вот код
https://github.com/pvpkiran/mongoprefill
Учитывая начальные данные, эта автоконфигурация заполняет монго.
Вы также можете использовать Mongobee для этого. If запускает вашу ревизию при загрузке приложения.
Maven зависимость
<dependency>
<groupId>com.github.mongobee</groupId>
<artifactId>mongobee</artifactId>
</dependency>
вам нужно будет создать bean-компонент для Mongobee в вашем XML-файле контекста
<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, он также поддерживает таблицу версий схемы, чтобы тот же набор изменений не выполнялся снова в той же среде.
Вы можете импортировать данные JSON во время ваших испытаний с помощью flapdoodle
Смотрите ответ на похожий вопрос здесь: Импорт файла JSON в Mongo db с использованием Spring Data Embedded Mongo