Nil*_*hal 0 java mongodb spring-data spring-data-mongodb spring-boot
目前,我们正在寻找一种解决方案,将以下User实体同时保存到多个 MongoDB 集合中(即db_users和 on db_users_legacy)。两个集合都在同一个数据库中。
请不要问我为什么需要保存在两个集合中。这是业务需求。
@Document(collection = "db_users")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@Id
private String id;
private String name;
private String website;
private String name;
private String email;
}
Run Code Online (Sandbox Code Playgroud)
我的 SpringBoot 应用程序配置如下;
@Configuration
public class ApplicationConfig {
@Bean
public MongoTemplate mongoTemplate(MongoDbFactory factory){
MongoTemplate template = new MongoTemplate(factory);
template.setWriteConcern(WriteConcern.ACKNOWLEDGED);
retu,rn template;
}
}
Run Code Online (Sandbox Code Playgroud)
目前我的存储库看起来像这样。并且保存工作得很好。如何在两个不同的集合中相同此文档?
@Repository
public class UserRepositoryImpl implements UserRepository {
private MongoTemplate mongoTemplate;
public UserRepositoryImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public void save(User user) {
mongoTemplate.save(user);
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议处理这个问题的最佳选择吗?
我建议使用MongoTemplate另一个重载的保存方法。
@Override
public void save(User user) {
mongoTemplate.save(user, "db_users");
mongoTemplate.save(user, "db_users_legacy");
}
Run Code Online (Sandbox Code Playgroud)
这可用于将同一对象保存到多个集合。从文档,
您可以通过使用 @Document 注释提供不同的集合名称来自定义它。您还可以通过提供您自己的集合名称作为所选 MongoTemplate 方法调用的最后一个参数来覆盖集合名称。
因此, 中专门提供的集合名称无关紧要@Document,您始终可以使用MongoTemplate.
| 归档时间: |
|
| 查看次数: |
4595 次 |
| 最近记录: |