如何在orOperator中使用andOperator

时间:2017-03-30 22:24:29

标签: java spring mongodb

我有一个功能

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)),
);

我如何构建这样的查询?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下内容。

Criteria.where("type").is(type).orOperator(
    new Criteria().andOperator(regexBuilder("description", keywords)),
    new Criteria().andOperator(regexBuilder("notes", keywords)),
);