Spring boot Embedded MongoDb данные предварительно заполнены

Я хочу знать, есть ли какие-либо инструменты, такие как Flyway, которые могут помочь в инициализации / миграции базы данных для mongodb. Некоторые мысли у меня были

  1. Я использовал flapdoodle в качестве встроенного монго с Springboot. Это работает нормально, но мне нужно вручную вставить данные в него.
  2. Для тестов 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

Другие вопросы по тегам