MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie verwende ich DB-Referenzen mit reaktivem Spring Data MongoDB?

TL;DR

Es gibt kein DBRef Unterstützung in reaktiven Spring Data MongoDB und ich bin mir nicht sicher, ob es eine geben wird.

Erklärung

Spring Data-Projekte sind in Vorlagen-API-, Konverter- und Mapping-Metadaten-Komponenten organisiert. Die imperative (blockierende) Implementierung der Vorlagen-API verwendet einen imperativen Ansatz, um Document abzurufen s und konvertieren Sie diese in Domänenobjekte. MappingMongoConverter übernimmt insbesondere die gesamte Konvertierung und DBRef Auflösung. Diese API arbeitet in einer synchronen/imperativen API und wird für beide Vorlagen-API-Implementierungen (imperative und reaktive) verwendet.

Wiederverwendung von MappingMongoConverter war die logische Entscheidung beim Hinzufügen reaktiver Unterstützung, da wir keinen Code duplizieren müssen. Die einzige Einschränkung ist DBRef Auflösung, die nicht zum reaktiven Ausführungsmodell passt.

Um reaktives DBRef zu unterstützen s muss der Konverter in mehrere Bits aufgeteilt werden und das gesamte Assoziationshandling muss überarbeitet werden.

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

Empfehlung

Behalten Sie Referenzen als Schlüssel/IDs in Ihrem Domänenmodell bei und suchen Sie diese nach Bedarf. zipWith und flatMap sind die geeigneten Operatoren, je nachdem, was Sie archivieren möchten (Modell mit Referenzen erweitern, nur Referenzen suchen).

In diesem Zusammenhang:Reactive Spring Data MongoDB wird teilweise mit einem reduzierten Funktionsumfang geliefert. Die kontextabhängige SpEL-Erweiterung ist eine Funktion, die nicht unterstützt wird, da diese Komponenten ein imperatives Programmiermodell und somit eine synchrone Ausführung voraussetzen.