$ text查询需要MongoDB文本索引

时间:2020-10-08 20:58:05

标签: java mongodb spring-boot

我试图找到问题的答案,但是我的具体问题什么也找不到。 当我尝试使用TextCriteria对集合进行简单的文本搜索时,出现错误:

Query failed with error code 27 and error message 'text index required for $text query'

我确定这是我的mongo错误,但我无法解决问题。

我的收藏实现示例:

@Document(collection = "mission")
@Getter
@Setter
@JsonInclude(Include.NON_NULL)
public class Mission {
    @Id
    @JsonProperty("_id")
    private String id;

    @JsonProperty("secteur")
    private String secteur;

    @JsonProperty("client")
    private String client;

    @Field
    @TextIndexed
    @JsonProperty("poste")
    private String poste;
    
    @Field
    @TextIndexed
    @JsonProperty("competences")
    private List<Competence> competences;

    @Field
    @TextIndexed
    @JsonProperty("description")
    private String description;

我用来检索列表的方法:

@Override
public Collection<Mission> findAllByCriteria() {
    return missionDao.findAllBy(TextCriteria.forDefaultLanguage().matchingAny("angular"));
}

1 个答案:

答案 0 :(得分:0)

此特定集合是否首先创建了适当的文本索引?在不知道数据库是如何创建的情况下,可能无法创建数据库,而您必须自己创建数据库。如果您已经在使用相同的代码将该实体持久保存到数据库中,则Mongo应该为您创建文本索引。

请参阅Mongo文档中的文本索引,并检查此post