我有一个功能
Criteria[] regexBuilder(String field, String[] patterns) {
return Arrays.stream(keyWordPattern)
.map(it -> Criteria.where(field).regex(Pattern.compile(it, Pattern.LITERAL).toString(), "si"))
.toArray(Criteria[]::new);
}
我这样使用:
// Assume type: String and keywords: String[]
Criteria.where("type").is(type).andOperator(regexBuilder("description", keywords));
如果description
字段全部关键字或 notes
字段 ,我想要的是搜索匹配项所有关键字。类似的东西:
Criteria.where("type").is(type).orOperator(
andOperator(regexBuilder("description", keywords)),
andOperator(regexBuilder("notes", keywords)),
);
我如何构建这样的查询?
答案 0 :(得分:2)
您可以尝试以下内容。
Criteria.where("type").is(type).orOperator(
new Criteria().andOperator(regexBuilder("description", keywords)),
new Criteria().andOperator(regexBuilder("notes", keywords)),
);