[已经存储在Mongo数据库中的一些文档:
{
"companyName": "Google",
"departmentName": "Sales"
},
{
"companyName": "Google",
"departmentName": "HR"
},
{
"companyName": "Amazon",
"departmentName": "Marketing"
}
我需要实现一个方法,该方法将接收2个属性:companyName
,departmentName
(其中一个可以是可选的,并将返回找到的文档列表,例如:
[departmentName
为null
而companyName
为Google
时,方法返回2个文档:
{
"companyName": "Google",
"departmentName": "Sales"
},
{
"companyName": "Google",
"departmentName": "HR"
}
[当companyName
为null
而departmentName
为Marketing
时,仅返回一个文档:
{
"companyName": "Amazon",
"departmentName": "Marketing"
}
我试图以各种方式实现它,但没有人符合我的需求:
public interface CompanyRepository extends ReactiveMongoRepository<Company, String> {
Flux<Company> findByCompanyNameAndDepartmentName(String companyName, String departmentName);
}
companyName
或departmentName
为null
时返回0个结果。
选项2:
Company company = Company.builder()
.companyName(null)
.departmentName("Marketing")
.build();
repository.findAll(Example.of(company))
.subscribe(System.out::println);
还会打印0个结果,但我希望看到一个文档。
所以,请提出建议以实施适当的搜索?
您可以尝试使用以下存储库界面:
public interface CompanyRepository extends ReactiveMongoRepository<Company, String> {
Flux<Company> findByCompanyNameOrDepartmentName(String companyName, String departmentName);
}
更改是JPA方法名称从findByCompanyNameAndDepartmentName更改为findByCompanyNameOrDepartmentName。因为如果任何字段与您的输入匹配,您就需要结果。
参考:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation