我有一个函数
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
字段有 all 关键字 或 notes
,我想要的是搜索匹配项> 字段包含所有 关键字。像这样的东西:
Criteria.where("type").is(type).orOperator(
andOperator(regexBuilder("description", keywords)),
andOperator(regexBuilder("notes", keywords)),
);
我将如何构建这样的查询?
最佳答案
你可以试试下面的方法。
Criteria.where("type").is(type).orOperator(
new Criteria().andOperator(regexBuilder("description", keywords)),
new Criteria().andOperator(regexBuilder("notes", keywords)),
);
关于java - 如何在orOperator里面使用andOperator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43129383/