Spring Data MongoDB реактивный отчетливый не работает - PullRequest
0 голосов
/ 22 мая 2018

Рассмотрим следующую зависимость:

  • org.springframework.boot.spring-boot-starter-data-mongodb-reactive (2.0.2.RELEASE)

У меня есть коллекция, из которой мне нужно получить различные значения,Однако, когда я использую метод запроса для получения Flux различных значений, он не работает.Я определил следующий метод запроса, используя закрытую проекцию IdentifierOnly:

@Repository
public interface FooBarRepository extends ReactiveCrudRepository<FooBar, String> {

    Flux<IdentifierOnly> findDistinctByFooAndBar(String foo, String bar);
}

Класс документа / коллекции:

@Document
public class FooBar {

    private String identifier; // not unique
    private String foo;
    private String bar;
    // extra fields

    // getters and setters
}

Закрытая проекция:

public interface IdentifierOnly {

    getIdentifier();
}

Однако запрос, который выполняется и регистрируется ReactiveMongoTemplate, выглядит следующим образом: find using query: { "foo" : "xxxx", "bar" : "yyyy" } fields: Document{{identifier=1}} for class: class org.example.models.FooBar in collection: fooBar и не возвращает каких-либо результатов, так как содержит дубликаты.

Что я делаю неправильно?Как я могу получить различные значения (идентификаторы) на основе конкретного запроса?

1 Ответ

0 голосов
/ 22 мая 2018

TL; DR

Это не работает (пока).Я подал DATAMONGO-1985 , чтобы выяснить, как мы можем интегрировать отдельные запросы.

Объяснение

MongoDB предоставляет отдельную операцию, которая требует ровно одно поле для получения различных значений.Эта операция доступна в API-интерфейсе шаблона, но не через API-интерфейс хранилища.С точки зрения хранилища, фактически нет возможности указать поле, которое следует использовать для отдельной операции.

Приведенный выше код представляет интересный случай, в котором используются все ингредиенты (отдельное ключевое слово, закрытая проекция с одним полем)это было бы необходимо для выведения отдельного запроса.

...