Spring Data Mon go: Как фильтровать документы по необязательным атрибутам? - PullRequest
0 голосов
/ 30 марта 2020

Несколько документов, которые уже сохранены в пн go дБ:

{
"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);

}

возвращает 0 результатов, когда companyName или departmentName равно null.

Опция 2:

Company company = Company.builder()
    .companyName(null)
    .departmentName("Marketing")
    .build();

repository.findAll(Example.of(company))
    .subscribe(System.out::println);

также печатает 0 результатов, но я ожидаю увидеть один документ.

, поэтому, пожалуйста, совет для правильного поиска?

1 Ответ

0 голосов
/ 30 марта 2020

Не могли бы вы попробовать использовать приведенный ниже интерфейс репозитория:

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-method.query-creation

...