我将我的 Spring Data Mongodb 响应式示例更新为最新的 Spring Boot(2.5.6),有一个findByKeyword方法可用于regex
匹配帖子标题和内容。
Flux<Post> findByKeyword(String q) {
var reg = ".*" + q + ".*";
return template.find(query(where("title").regex(reg).orOperator(where("content").regex(reg))),
Post.class);
}
并添加一个测试方法来验证它,它在最新版本中不起作用。
public void testFindByKeyword() {
this.postRepository.findByKeyword("title")
.skip(0)
.take(10)
.log()
.as(StepVerifier::create)
.expectNextCount(10)
.verifyComplete();
}
在另一种方法findByTitleContains
中,它没有使用orOperator
并且效果很好。
我不确定orOperator
过去的版本有什么变化,它在旧版本(Spring Boot 2.1 或 2.2)中运行良好。