sql >> Database >  >> NoSQL >> MongoDB

Hoe db-referenties te gebruiken met reactieve Spring Data MongoDB?

TL;DR

Er is geen DBRef ondersteuning in reactieve Spring Data MongoDB en ik weet niet zeker of die er zal zijn.

Uitleg

Spring Data-projecten zijn georganiseerd in de componenten Template API, Converter en Mapping Metadata. De imperatieve (blokkerende) implementatie van de Template API gebruikt een imperatieve benadering om Document op te halen s en zet deze om in domeinobjecten. MappingMongoConverter in het bijzonder behandelt alle conversies en DBRef oplossing. Deze API werkt in een synchrone/imperatieve API en wordt gebruikt voor beide Template API-implementaties (imperatieve en de reactieve).

Hergebruik van MappingMongoConverter was de logische beslissing bij het toevoegen van reactieve ondersteuning omdat we geen code hoeven te dupliceren. De enige beperking is DBRef resolutie die niet past in het reactieve uitvoeringsmodel.

Ter ondersteuning van reactieve DBRef s, de converter moet worden opgesplitst in verschillende bits en de hele omgang met associaties vereist een revisie.

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

Aanbeveling

Bewaar referenties als sleutels/Id's in uw domeinmodel en zoek deze indien nodig op. zipWith en flatMap zijn de juiste operators, afhankelijk van wat u wilt archiveren (model verbeteren met referenties, alleen opzoekreferenties).

Een verwante opmerking:Reactive Spring Data MongoDB wordt gedeeltelijk geleverd met een beperkte functieset. Contextuele SpEL-extensie is een functie die niet wordt ondersteund omdat deze componenten uitgaan van een imperatief programmeermodel en dus synchrone uitvoering.



  1. Query MongoDB voor meerdere ObjectID's in Array

  2. Serverbeveiliging parseren

  3. akka-streams gebruiken om mongo-verzameling te overlopen

  4. Mongoose, sorteer op basis van buitenlandse/bevolkte sleutel