我正在使用反应性mongodb开发简单的spring webflux演示应用程序,我想按名称读取Employee的所有数据,除了包含名称字段“ joe”,“ Sara”,“ JOE”,“ SARA”,而且我有以下代码:
//存储库界面
public interface EmployeeRepository extends ReactiveMongoRepository<Employee, String>{
Flux<Employee> findAllByName(String name);
}
//服务等级
public class EmplyeeService
{
private EmployeeRepository employeeRepository;
public Flux<Employee> findAllByOrganizationName(String name)
{
return employeeRepository.findAllByName(name);
}
public Flux<String> getAllNameExceptSome(String name)
{
Employee emp1=new Employee();
List<Flux<Employee>> emp=Arrays.asList(employeeRepository.findAllByName(name));
Flux<Flux<Employee>> emp2=Flux.fromIterable(emp)
.filter(name->name.equalsIgnoreCase("joe"));
return emp2;
}
}
答案 0 :(得分:0)
首先,除非有特殊情况,否则应避免使用以下数据结构:
List<Flux<Employee>>
Flux<Flux<Employee>>
但是,您没有利用Spring Data。只需将存储库更改为:
public interface EmployeeRepository extends ReactiveMongoRepository<Employee, String> {
// this find all Employee except those matching names provided as param
Flux<Employee> findAllByNameNotIn(List<String> nameList);
// this find all Employee matching names provided as param
Flux<Employee> findAllByNameIn(List<String> nameList);
}
调用此方法,您将获得已按名称过滤的Employee列表。