【问题标题】:How can you load initial data in MongoDB through Spring Boot?如何通过 Spring Boot 在 MongoDB 中加载初始数据?
【发布时间】:2018-05-20 13:56:19
【问题描述】:

是否可以使用src/main/resources/data.sql 或任何其他文件将初始数据加载到MongoDB 数据库中?

我知道data.sql 用于SQL 数据库,而MongoDBNOSQL 数据库。但只是想知道NOSQL DB 是否有任何等效的data.sql

在谷歌搜索时,我发现了这个 SO 链接 (Spring Boot - Loading Initial Data),它可以满足我的需求,但它仍然不是独立文件 data.sql

【问题讨论】:

    标签: java mongodb spring-boot nosql spring-data-mongodb


    【解决方案1】:

    要加载初始数据,您可以使用数据库迁移工具,例如MongoBee

    在java中处理数据初始化是非常有用的选项。您只需要在您的 Spring Boot 中配置 @Bean public Mongobee mongobee 并设置组件扫描以查找实际发生数据创建的数据 ChangeLogs。

    【讨论】:

      【解决方案2】:

      您可以在 json/xml 中定义数据并使用存储库的填充器元素来加载数据。

      https://docs.spring.io/spring-data/mongodb/docs/2.0.9.RELEASE/reference/html/#core.repository-populators

      【讨论】:

        【解决方案3】:

        您可以将存储库填充器与 Spring Data MongoDB 一起使用。让我用 Kotlin 中的代码示例来演示这一点:

        @Configuration
        class TestApplicationConfig {
            @Value("classpath:test_data.json")
            private lateinit var testData: Resource
        
            @Bean
            @Autowired
            fun repositoryPopulator(objectMapper: ObjectMapper): Jackson2RepositoryPopulatorFactoryBean {
                val factory = Jackson2RepositoryPopulatorFactoryBean()
                // inject your Jackson Object Mapper if you need to customize it:
                factory.setMapper(objectMapper)
                factory.setResources(arrayOf(testData))
                return factory
            }
        }
        

        test_data.json放入资源目录。

        【讨论】:

        • 你能从 test_data.json 中取出数组并一一填充吗?
        • @ShaharWider 看起来像是一个新问题。请ask,Stack Overflow 会回答。
        • 我大约 20 天前做过。没有人回答...stackoverflow.com/questions/60711819/…
        猜你喜欢
        • 2016-10-28
        • 2011-03-26
        • 2019-04-21
        • 2018-04-16
        • 2018-09-05
        • 1970-01-01
        • 2020-12-03
        • 2021-10-06
        • 2018-02-14
        相关资源
        最近更新 更多