复合索引Spring不区分大小写

4

我正在从Spring层面上处理MongoDB中的索引。我想使用不区分大小写的索引。

从上面的MongoDB文档中,我可以看到从数据库级别可以使用强度排序(collation)来实现,并应该在createIndex函数中使用。但是,我无法找到有关如何在CompoundIndex注释中使用选项的任何信息。

在Spring文档中没有提到有关选项的内容。是否有人知道如何操作?


您可以随时预览 2.0.0.RC2 - Neil Lunn
我也在那里寻找了一下,但没有找到任何关于可添加选项的信息。看起来CompoundIndex注释中没有支持此参数的选项,但我认为这很奇怪。 - doubleW
@doubleW 我也在寻找同样的信息。你找到任何解决方案了吗? - MIM
@MIM 很遗憾,我目前不再参与这个项目。 - doubleW
@doubleW 好的,谢谢。我现在正在进行强度排序。 - MIM
2个回答

3

在类似于@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
我在寻找相同的信息时发现,您可以使用以下内容:
@CompoundIndex(name = "name_field", def = "{field1: 1,field2:1}{collation:'en', strength:2}")

虽然文档中没有提到,但我发现有一个关于此问题的未解决问题(https://jira.spring.io/browse/DATAMONGO-2133)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接