mongodb - 跨会话不可见对 mongo 集合的更改
问题描述
这是我的 mongo 配置:
@Configuration
public class MongoConfig {
@Bean
public MongoCustomConversions customConversions() {
return new MongoCustomConversions(Arrays.asList(new OffsetDateTimeReadConverter(), new OffsetDateTimeWriteConverter()));
}
@Bean
public ValidatingMongoEventListener validatingMongoEventListener() {
return new ValidatingMongoEventListener(validator());
}
@Bean
public LocalValidatorFactoryBean validator() {
return new LocalValidatorFactoryBean();
}
}
和:
spring:
data:
mongodb:
uri: mongodb://localhost:27017/my-database
我注意到我在 Spring Boot 服务中对我的集合所做的任何更改,无论我使用repository
or MongoOperations
,save
or find
,它们仅在 Spring Boot 服务的生命周期内可见,并且在命令行 mongo 界面中不可见。此外,我使用 mongo 命令行添加的文档对 spring boot 服务不可见。据我所知,我只有一个 mongodb 实例,在任务管理器中只有一个可见。我也仔细检查了数据库和集合的名称。可能是什么原因?
解决方案
我发现问题是由嵌入式 MongoDB 引起的:
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<scope>test</scope>
</dependency>
尽管范围是test
,嵌入式服务器也为主要配置运行。我只能在 eclipse 中观察到这种行为,而不是在 Intellij 中。
我可以通过排除嵌入式配置来解决或至少规避该问题:
@SpringBootApplication(exclude = EmbeddedMongoAutoConfiguration.class)
public class MyApplication
推荐阅读
- ms-access - MS Access Go 控制子窗体
- javascript - 如何在对象javascript中获取加倍属性的数量
- android - Google Play 结算库 - 印度地区的订阅未启用免费试用
- linux - 如何使用 sed 命令将 = 之后的值替换为 null
- fpga - Xilinx FPGA 中的路由问题。[路由 35-54] 网络:design_1_i/AdcClock_X/inst/IntFClk 未完全路由
- python - 如何将变量传递给函数
- avalara - 在沙盒环境中部署最新版本的 Avalara 模型后无法进行 AvaTax 连接器设置
- xcode - 不明确的证书名称 - Delphi 和 MacOS 应用程序
- pine-script - 特定于 1 天时间范围的平均交易量
- python-3.x - python scapy sendp() 执行时间