【问题标题】:CompoundIndex spring case insensitiveCompoundIndex 弹簧不区分大小写
【发布时间】:2018-01-17 08:20:28
【问题描述】:

所以,我从 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.0.RC2
  • 我也在看。但没有找到有关可能添加的选项的任何信息。看起来 CompoundIndex 注释中不支持此参数,但我认为这会很奇怪
  • @doubleW 我也在寻找相同的信息。你找到解决办法了吗?
  • @MIM 很遗憾没有,目前我不再从事这个项目
  • @doubleW 好的,谢谢,我现在正在进行强度排序。

标签: java spring mongodb indexing spring-data


【解决方案1】:

我没有在@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()))
        )
    }

【讨论】:

    【解决方案2】:

    我一直在寻找相同的信息,发现你可以使用这个:

    @CompoundIndex(name = "name_field", def = "{field1: 1,field2:1}{collation:'en', strength:2}")
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 2021-06-21
      • 2012-12-01
      • 2013-03-06
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多