CompoundIndex弹簧不区分大小写

时间:2017-08-09 12:29:01

标签: java spring mongodb indexing spring-data

所以,我正在从Spring级别开始研究MongoDB中的索引。我想使用不区分大小写的索引。

https://docs.mongodb.com/v3.4/core/index-case-insensitive/

从上面的mongo文档中我可以看到,从DB级别可以使用强度校对来完成,并且应该在createIndex函数中使用。但我无法找到有关如何使用CompoundIndex注释中的选项的任何信息。

http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/index/CompoundIndex.html

在Spring dosc上,没有关于选项的消息。任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:2)

我在@Indexed之类的注释中找不到这样的选项,但是您可以使用类似的方法来确保索引与排序规则一起存在:

@Configuration
@DependsOn("mongoTemplate")
class CollectionConfig(@Autowired private val mongoTemplate: MongoTemplate) {

    @PostConstruct
    fun ensureIndexes() {
        mongoTemplate.indexOps(DbObject::class.java).ensureIndex(
                Index("fieldName", Sort.Direction.ASC)
                        .unique()
                        .background()
                     .collation(of(Locale.ENGLISH).strength(ComparisonLevel.secondary()))
        )
    }

答案 1 :(得分:0)

我正在寻找相同的信息并发现您可以使用它:

enum State { CREATED, VALID, TERMINATED }
State state;

modifier requireState(State _state) {
   require(state == _state);
   _;
}

文档中没有提到它,但我发现了一个悬而未决的问题 (https://jira.spring.io/browse/DATAMONGO-2133)