目前,我们正在寻找一种解决方案来同时将以下User
实体保存到多个MongoDB集合中(即db_users
和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;
}
我的SpringBoot应用程序配置是这样的;
@Configuration
public class ApplicationConfig {
@Bean
public MongoTemplate mongoTemplate(MongoDbFactory factory){
MongoTemplate template = new MongoTemplate(factory);
template.setWriteConcern(WriteConcern.ACKNOWLEDGED);
retu,rn template;
}
}
目前,我的存储库如下所示。而且保存的效果非常好。如何在两个不同的集合中使用相同的文档?
@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);
}
}
有没有人能建议一下解决这个问题的最佳方案?
发布于 2018-09-12 04:11:52
我建议使用MongoTemplate
的other overloaded save method。
@Override
public void save(User user) {
mongoTemplate.save(user, "db_users");
mongoTemplate.save(user, "db_users_legacy");
}
这可用于将同一对象保存到多个集合中。从文档中,
您可以通过使用@Document注释提供一个不同的集合名称来自定义它。您还可以通过提供自己的集合名称作为所选MongoTemplate方法调用的最后一个参数来覆盖集合名称。
因此,在@Document
中专门提供的集合名称并不重要,您始终可以使用MongoTemplate
覆盖它。
https://stackoverflow.com/questions/52282952
复制相似问题