基于 org.springframework.data.mongodb. 的动态索引管理
可以在代码中实现 对索引的增删改查
支持组合索引
@Autowired
private MongoTemplate mongoTemplate;
/**
* 创建联合索引
*
* @param index_key 索引的名称
* @param index_key2 索引的名称
* @param collectionName 集合名称
* @return
*/
public boolean createInboxIndex(String index_key, String index_key2, String collectionName) {
boolean scuess = true;
try {
Index index = new Index();
index.on(index_key, Sort.Direction.ASC).on(index_key2, Sort.Direction.ASC);
mongoTemplate.indexOps(collectionName).ensureIndex(index);
} catch (Exception ex) {
scuess = false;
}
return scuess;
}
/**
* 创建单个索引
*
* @param index_key 索引的名称
* @param collectionName 集合名称
* @return
*/
public boolean createInboxIndex(String index_key, String collectionName) {
boolean scuess = true;
try {
Index index = new Index();
index.on(index_key, Sort.Direction.ASC);
mongoTemplate.indexOps(collectionName).ensureIndex(index);
} catch (Exception ex) {
scuess = false;
}
return scuess;
}
/**
* 获取索引
*
* @return
*/
public List<IndexInfo> getInboxIndex() {
List<IndexInfo> indexInfoList = mongoTemplate.indexOps(Stats.class).getIndexInfo();
for (IndexInfo indexInfo : indexInfoList) {
String name = indexInfo.getName();
// 不需要的就删除
if(name.equals("delete")){
// deleteInboxIndex(indexInfo.getName()); // 原
deleteInboxIndex(indexInfo.getName(),"tb_stats"); // 修改
}
}
return indexInfoList;
}
/**
* 删除索引
*
* @param indexName 索引的名称
* @param collectionName 集合名称
* @return
*/
public boolean deleteInboxIndex(String indexName, String collectionName) {
boolean scuess = true;
try {
mongoTemplate.indexOps(collectionName).dropIndex(indexName);
} catch (Exception ex) {
scuess = false;
}
return scuess;
}
还没有评论,来说两句吧...