MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak używać referencji db z reaktywną Spring Data MongoDB?

TL;DR

Nie ma DBRef wsparcie w reaktywnym Spring Data MongoDB i nie jestem pewien, czy będzie.

Wyjaśnienie

Projekty Spring Data są podzielone na komponenty Template API, Converter i Mapping Metadata. Niezbędna (blokowanie) implementacja interfejsu API szablonów wykorzystuje imperatywne podejście do pobierania Document si przekonwertować je na obiekty domeny. MappingMongoConverter w szczególności obsługuje wszystkie konwersje i DBRef rezolucja. Ten interfejs API działa w synchronicznym/imperatywnym interfejsie API i jest używany do obu implementacji interfejsu API szablonów (imperatywnej i reaktywnej).

Ponowne użycie MappingMongoConverter była logiczną decyzją podczas dodawania wsparcia reaktywnego, ponieważ nie musimy duplikować kodu. Jedynym ograniczeniem jest DBRef rozdzielczość, która nie pasuje do reaktywnego modelu wykonania.

Aby wspierać reaktywne DBRef s, konwerter musi zostać podzielony na kilka bitów, a cała obsługa asocjacji wymaga remontu.

Odniesienie :https://jira.spring.io/browse/DATAMONGO-2146

Rekomendacja

Zachowaj odwołania jako klucze/identyfikatory w modelu domeny i wyszukaj je w razie potrzeby. zipWith i flatMap są odpowiednimi operatorami, w zależności od tego, co chcesz zarchiwizować (ulepszyć model o odniesienia, tylko odnośniki wyszukiwania).

W związku z tym:Reactive Spring Data MongoDB zawiera częściowo zredukowany zestaw funkcji. Kontekstowe rozszerzenie SpEL to funkcja, która nie jest obsługiwana, ponieważ te komponenty zakładają imperatywny model programowania, a tym samym wykonanie synchroniczne.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pobierz indeks elementu w tablicy w MongoDB

  2. Jak zwrócić wartości wariantów każdego produktu, jeśli ten produkt jest wariantem?

  3. Nie można połączyć się z MongoLab błąd uwierzytelniania

  4. MongoDb :mapReduce out collection result

  5. Mongo Atlas:Uwierzytelnianie połączenia z niestandardowymi bazami danych nie powiodło się