spring-boot - 使用reactivemongodb查询mongodb集合SpringWebFlux
问题描述
我正在使用响应式 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;
}
}
解决方案
首先,除非某些特殊情况,否则应该避免使用这些数据结构:
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 列表。
推荐阅读
- java - 为什么我会收到唯一索引或主键违规?
- python - 未使用局部变量 'char' 值 - 我该如何解决?
- amazon-web-services - AWS Glue Catalog 无法检测 parquet 文件,而是将根路径创建为单个表
- ruby - 将 LDAP 搜索结果转换为 CSV
- image-processing - 使用 PHP Imagick 调整原始图像大小不起作用
- flutter - Dart:地图从地图中添加更多具有不同子类型的条目
- java - 从一个构造函数访问数组列表到另一个构造函数android
- ruby-on-rails - file_field_tag:仅上传小于特定大小的 zip 文件 - RAILS
- javascript - 如何在没有 Jquery 的情况下在本地使用 javascript 加载 json 文件?
- php - Why is this custom wordpress link not clickable?