sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur använder man db-referenser med reaktiva Spring Data MongoDB?

TL;DR

Det finns ingen DBRef stöd i reaktiv Spring Data MongoDB och jag är inte säker på att det kommer att finnas.

Förklaring

Spring Data-projekt är organiserade i Template API, Converter och Mapping Metadata-komponenter. Den imperativa (blockerande) implementeringen av Template API använder en imperativ metod för att hämta Document s och konvertera dessa till domänobjekt. MappingMongoConverter hanterar särskilt all konvertering och DBRef upplösning. Detta API fungerar i ett synkront/imperativt API och används för både Template API-implementeringar (imperativt och det reaktiva).

Återanvändning av MappingMongoConverter var det logiska beslutet när vi lade till reaktivt stöd eftersom vi inte behöver duplicera kod. Den enda begränsningen är DBRef upplösning som inte passar den reaktiva exekveringsmodellen.

För att stödja reaktiv DBRef s måste omvandlaren delas upp i flera bitar och hela associationshanteringen kräver en översyn.

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

Rekommendation

Behåll referenser som nycklar/ID:n i din domänmodell och slå upp dessa efter behov. zipWith och flatMap är lämpliga operatorer, beroende på vad du vill arkivera (förbättra modellen med referenser, endast uppslagsreferenser).

På en relaterad notering:Reactive Spring Data MongoDB kommer delvis med en reducerad funktionsuppsättning. Kontextuell SpEL-förlängning är en funktion som inte stöds eftersom dessa komponenter förutsätter en imperativ programmeringsmodell och därmed synkron exekvering.



  1. Hur man byter namn på fält i Hash för flera nycklar i Redis

  2. MongoDB Bulk import med mongoimport från Windows-mappen

  3. Redis serviceStack poolad anslutningsklient

  4. Bästa sättet att utföra en fulltextsökning i MongoDB och Mongoose