TL; DR
В реактивной Spring Data MongoDB нет поддержки DBRef
, и я не уверен, что она будет.
Объяснение
Проекты Spring Data организованы в компоненты Template API, Converter и Mapping Metadata. Императивная (блокирующая) реализация Template API использует императивный подход для извлечения Document
s и преобразования их в объекты домена. В частности, MappingMongoConverter
обрабатывает все преобразования и DBRef
разрешение. Этот API работает в синхронном / императивном API и используется как для реализации API-шаблона (императивной, так и для реактивной).
Повторное использование MappingMongoConverter
было логичным решением при добавлении реактивной поддержки, поскольку нам не нужно дублировать код. Единственное ограничение - разрешение DBRef
, которое не соответствует модели реактивного выполнения.
Для поддержки реактивных DBRef
с преобразователь должен быть разделен на несколько бит, а вся обработка ассоциации требует капитального ремонта.
Ссылка: https://jira.spring.io/browse/DATAMONGO-2146
Рекомендация
Сохраните ссылки в качестве ключей / идентификаторов в модели вашего домена и ищите их по мере необходимости. zipWith
и flatMap
- соответствующие операторы, в зависимости от того, что вы хотите заархивировать (улучшить модель с помощью ссылок, только ссылки поиска).
На заметку по теме: Reactive Spring Data MongoDB поставляется частично с сокращенным набором функций. Контекстное расширение SpEL - это функция, которая не поддерживается, поскольку эти компоненты предполагают императивную модель программирования и, следовательно, синхронное выполнение.