You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Spring Data MongoDB注解创建指定默认语言的通配符文本索引?

解决Spring Data MongoDB注解创建指定默认语言的通配符文本索引问题

你遇到的问题根源是错误地将索引选项(如default_language)放到了@CompoundIndex的def属性中——这个属性仅用于定义索引的键结构,而索引配置选项需要单独通过options属性来指定。

在Spring Data MongoDB 2.3.7版本中,@CompoundIndex提供了options参数,专门用来传递创建索引时的配置选项(比如默认语言、权重等)。你可以按以下方式修正你的模型类:

@Document(collection = "events")
@CompoundIndexes({
    @CompoundIndex(
        name = "fulltext",
        def = "{'$**': 'text'}",
        options = "{'default_language': 'german'}"
    )
})
public class Event {
    public Event() { }
    protected String name;
    // 其他字段定义...
}

为什么之前的写法不生效?

你之前把键定义和选项合并到def中的写法,Spring Data只会解析第一个JSON对象(即{'$**':'text'})作为索引的键结构,第二个对象会被忽略,导致default_language配置没有被传递给MongoDB。而单独使用options属性后,Spring Data会将键定义和选项组合成完整的创建索引命令,效果和你在Mongo Shell中执行的db.events.createIndex({'$**':'text'},{default_language: "german"})完全一致。

这样修改后,Spring Data会自动创建带有德语默认语言的通配符文本索引,无需编写额外的编程式索引代码。

内容的提问来源于stack exchange,提问作者Paul K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:58:09