MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да използвам db препратки с реактивни Spring Data MongoDB?

TL;DR

Няма DBRef поддръжка в реактивни Spring Data MongoDB и не съм сигурен, че ще има.

Обяснение

Проектите Spring Data са организирани в Template API, компоненти Converter и Mapping Metadata. Императивното (блокиращо) внедряване на Template API използва императивен подход за извличане на Document s и ги преобразувайте в обекти на домейн. MappingMongoConverter по-специално обработва цялото преобразуване и DBRef резолюция. Този API работи в синхронен/императивен API и се използва и за двете реализации на Template API (императивен и реактивен).

Повторно използване на MappingMongoConverter беше логичното решение при добавяне на реактивна поддръжка, тъй като не е необходимо да дублираме код. Единственото ограничение е DBRef резолюция, която не отговаря на модела на реактивно изпълнение.

За поддръжка на реактивен DBRef s, конверторът трябва да бъде разделен на няколко бита и цялата обработка на асоциирането изисква основен ремонт.

Справка:https://jira.spring.io/browse/DATAMONGO-2146

Препоръка

Съхранявайте препратките като ключове/идентификационни номера във вашия модел на домейн и ги търсете, ако е необходимо. zipWith и flatMap са подходящите оператори, в зависимост от това какво искате да архивирате (подобрете модела с препратки, само препратки за търсене).

По свързана бележка:Reactive Spring Data MongoDB идва частично с намален набор от функции. Контекстното разширение на SpEL е функция, която не се поддържа, тъй като тези компоненти предполагат императивен модел на програмиране и следователно синхронно изпълнение.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB findAndModify()

  2. Информирайте Angular frontend, когато състоянието в Node backend (MongoDB) се промени

  3. PostgreSQL срещу MongoDB

  4. Визуална статистика за вашия MongoDB сървър

  5. Mongodb node.js $out с агрегиране, работещо само ако се извиква toArray()