Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring更新或删除@CompoundIndex_Java_Spring_Mongodb_Spring Boot_Compound Index - Fatal编程技术网

Java 如何使用Spring更新或删除@CompoundIndex

Java 如何使用Spring更新或删除@CompoundIndex,java,spring,mongodb,spring-boot,compound-index,Java,Spring,Mongodb,Spring Boot,Compound Index,我对现有@CompoundIndex的定义如下: @CompoundIndex(name = "idx_test_search", unique = true, def = "{type: 1, origin: 1, date: 1}") 现在我需要更改它以添加另一个字段,如: @CompoundIndex(name = "idx_test_search", unique = true, def = "{type: 1, origin: 1, date: 1,

我对现有@CompoundIndex的定义如下:

@CompoundIndex(name = "idx_test_search", unique = true,
        def = "{type: 1, origin: 1, date: 1}")
现在我需要更改它以添加另一个字段,如:

@CompoundIndex(name = "idx_test_search", unique = true,
        def = "{type: 1, origin: 1, date: 1, travelers: 1}")

我希望它会自动应用,就像它是在appstart上创建的一样,但在MongoDb中它仍然是原来的。我可以用新名称创建一个不同的索引,但是我需要删除这个索引。我可以用
@ChangeSet
完成吗?有什么想法吗?

我通过mongoTemplate和@Changeset成功做到了这一点:

@ChangeLog(order = "0.0.1")
public class MongoChangelogVersion_0_0_1 {

    @ChangeSet(order = "0001", id = "testSearchIndex", author = "djordje.ivanovic@****.com")
    public void dropIndex(MongoTemplate mongoTemplate) throws IOException {
        List<IndexInfo> indexes =  mongoTemplate.indexOps(TestSearch.class).getIndexInfo();
        for(IndexInfo indexInfo: indexes){
            if(indexInfo.getName().equals("idx_test_search")){
                mongoTemplate.indexOps(TestSearch.class).dropIndex("idx_test_search");
                break;
            }
        }
    }
}
@ChangeLog(order=“0.0.1”)
公共类MongoChangelogVersion_0_0_1{
@变更集(order=“0001”,id=“testSearchIndex”,author=“djordje.ivanovic@****.com”)
public void dropIndex(MongoTemplate MongoTemplate)引发IOException{
列表索引=mongoTemplate.indexOps(TestSearch.class).getIndexInfo();
for(IndexInfo IndexInfo:index){
if(indexInfo.getName().equals(“idx\u test\u search”)){
indexOps(TestSearch.class).dropIndex(“idx_测试_搜索”);
打破
}
}
}
}
indexOps(TestSearch.class)返回相关表的所有索引列表(在我的例子中是TestSearch),所以在检查索引是否存在后,我们将删除它