mongoDB动态配置文档名称

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: mongoDB动态配置文档名称

由于MongoDB中@Document注解适用于实体类上,所以项目的开始就写死了集合名:

@Document(collection = "test")

但是随着项目的进行,需要动态配置此处的集合名,于是我就开始尝试动态配置

动态配置:

mongoDB之@Document(collection = "#{personRepository.getCollectionName()}")

首先创建一个@Configuration类:

@Configuration
public class MongodbCollectionConfig {
 
    @Value("${spring.data.mongodb.collection-name}")
    private String collectionName;
 
    @Bean
    public String mongodbCollectionName(){
        return collectionName;
    }
}

配置文件中:

spring.data.mongodb.collection-name=test

Java代码:

@Document(collection = "#{personRepository.getCollectionName()}")
public class Person{}
 
public interface PersonRepository 
     extends MongoRepository<Person, String>, PersonRepositoryCustom{
}
 
public interface PersonRepositoryCustom {
    String getCollectionName();
 
    void setCollectionName(String collectionName);
}
 
public class PersonRepositoryImpl implements PersonRepositoryCustom {
 
    private static String collectionName = "Person";
 
    @Override
    public String getCollectionName() {
        return collectionName;
    }
 
    @Override
    public void setCollectionName(String collectionName) {
        this.collectionName = collectionName;
    }
}
 
@Autowired
PersonRepository personRepository;
 
public void testRetrievePeopleFrom2SeparateCollectionsWithSpringRepo(){
        List<Person> people = new ArrayList<>();
        personRepository.setCollectionName("collectionA");
        people.addAll(personRepository.findAll());
        personDocumentRepository.setCollectionName("collectionB");
        people.addAll(personRepository.findAll());
        Assert.assertEquals(4, people.size());
}

或者直接写在类上:

@Document(collection = "#{@getCollectionName}", collation = "zh")
@Data
public class CustomFormMongoEntity implements Serializable {
相关文章
|
8月前
|
NoSQL MongoDB 微服务
微服务——MongoDB常用命令——文档的分页查询
本文介绍了文档分页查询的相关内容,包括统计查询、分页列表查询和排序查询。统计查询使用 `count()` 方法获取记录总数或按条件统计;分页查询通过 `limit()` 和 `skip()` 方法实现,控制返回和跳过的数据量;排序查询利用 `sort()` 方法,按指定字段升序(1)或降序(-1)排列。同时提示,`skip()`、`limit()` 和 `sort()` 的执行顺序与编写顺序无关,优先级为 `sort()` &gt; `skip()` &gt; `limit()`。
285 1
|
8月前
|
JSON NoSQL MongoDB
微服务——MongoDB常用命令——文档基本CRUD
本文介绍了MongoDB中文档的基本操作,包括插入、查询、更新和删除。单个文档插入使用`insert()`或`save()`方法,批量插入用`insertMany()`。查询所有文档用`find()`,条件查询可在`find()`中添加参数,投影查询控制返回字段。更新文档通过`update()`实现,支持覆盖修改、局部修改(使用`$set`)和批量修改。列值增长可用`$inc`实现。删除文档用`remove()`,需谨慎操作以免误删数据。此外,文档键值对有序,区分大小写,不能有重复键。
152 1
|
5月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
546 4
|
NoSQL MongoDB 数据库
MongoDB 更新文档
10月更文挑战第14天
263 2
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
281 2
|
10月前
|
存储 监控 NoSQL
【赵渝强老师】MongoDB文档级别的并发控制
MongoDB使用WiredTiger存储引擎在文档级别进行并发控制,允许多个写操作同时修改不同文档,但对同一文档的修改需序列化执行。引擎采用乐观锁和意向锁机制处理冲突。通过视频讲解、插入大量文档示例及使用`mongotop`和`db.serverStatus()`命令,演示了如何监控MongoDB的锁信息和读写统计,展示了数据库和集合级别的写锁情况。
252 29
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
406 1
|
存储 NoSQL 关系型数据库
数据的存储--MongoDB文档存储(一)
数据的存储--MongoDB文档存储(一)
572 3
|
NoSQL MongoDB
MongoDB 删除文档
10月更文挑战第15天
244 0
|
存储 JSON NoSQL
MongoDB 插入文档
10月更文挑战第14天
458 0

推荐镜像

更多