Spring Data - Mongo DB - 搜索

时间:2016-09-28 20:57:49

标签: spring-data

我有这个域名对象

@Document(collection = "LabelsPredefined")

public class LabelsPredefined {

@TextIndexed
private String name;

public LabelsPredefined() {
}

public String getName() {
    return name;
}

public void setName(final String name) {
    this.name = name;
}

@Override
public String toString() {
    return "[LabelsPredefined]";
}
}

我在前端输入了自动完成功能。因此,当用户输入第一个字符时,我将开始搜索这是我的Spring数据存储库方法:

@Query("{$text : { $search : ?0 } }")
Set<LabelsPredefined> findLabelsPredefinedBySearchString(final String searchString);

我的问题是,只有当整个搜索字符串与名称匹配而不是方法响应对象时。有没有可能的解决方案?

1 个答案:

答案 0 :(得分:0)

我不知道这种语法:

@Query("{$text : { $search : ?0 } }")

也许您应该尝试传递TextCriteria而不是字符串:

TextCriteria criteria = TextCriteria.forDefaultLanguage()
  .matchingAny(searchString);

将签名方法更改为:

Set<LabelsPredefined> findLabelsPredefinedBySearchString(TextCriteria criteria);