繁体   English   中英

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

[英]How to update or drop @CompoundIndex with Spring

我现有的@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}")

我希望它会像在应用程序启动时创建的那样自动应用,但是在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;
            }
        }
    }
}

mongoTemplate.indexOps(TestSearch.class)返回相关表的所有索引的列表(在我的情况下为TestSearch),因此在检查索引是否存在后,我们将其删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM