使用reactivemongodb查询mongodb集合SpringWebFlux

时间:2019-12-05 07:03:54

标签: spring-boot spring-webflux

我正在使用反应性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;
  }
}

1 个答案:

答案 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列表。