sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan bruger man db-referencer med reaktive Spring Data MongoDB?

TL;DR

Der er ingen DBRef understøttelse i reaktive Spring Data MongoDB, og jeg er ikke sikker på, at der vil være det.

Forklaring

Spring Data-projekter er organiseret i Template API, Converter og Mapping Metadata-komponenter. Den imperative (blokerende) implementering af Template API bruger en imperativ tilgang til at hente Document s og konverter disse til domæneobjekter. MappingMongoConverter håndterer især al konvertering og DBRef løsning. Denne API fungerer i en synkron/imperativ API og bruges til både Template API-implementeringer (imperativ og den reaktive).

Genbrug af MappingMongoConverter var den logiske beslutning, mens vi tilføjede reaktiv support, da vi ikke har behov for at duplikere kode. Den eneste begrænsning er DBRef opløsning, der ikke passer til den reaktive udførelsesmodel.

For at understøtte reaktiv DBRef s, skal konverteren deles op i flere bits, og hele associeringshåndteringen kræver et eftersyn.

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

Anbefaling

Gem referencer som nøgler/Id'er i din domænemodel og slå disse op efter behov. zipWith og flatMap er de passende operatorer, afhængigt af hvad du vil arkivere (forbedr modellen med referencer, kun opslagsreferencer).

Om en relateret note:Reactive Spring Data MongoDB leveres delvist med et reduceret funktionssæt. Kontekstuel SpEL-udvidelse er en funktion, der ikke understøttes, da disse komponenter forudsætter en imperativ programmeringsmodel og dermed synkron udførelse.



  1. MongoError:Forkerte argumenter

  2. Hvordan sætter man (dvs. gemmer) et multidimensionelt associativt array ved hjælp af Predis?

  3. Hvordan bruger man et dynamisk variabelnavn i JavaScript uden eval til en MongoDB-opdatering?

  4. MongoDB objektegenskaben $ eksisterer i indlejret array