MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment utiliser les références db avec Spring Data MongoDB réactif?

TL;DR

Il n'y a pas de DBRef support dans Spring Data MongoDB réactif et je ne suis pas sûr qu'il y en aura.

Explication

Les projets Spring Data sont organisés en composants Template API, Converter et Mapping Metadata. L'implémentation impérative (bloquante) de l'API Template utilise une approche impérative pour récupérer Document s et convertissez-les en objets de domaine. MappingMongoConverter gère en particulier toute la conversion et DBRef résolution. Cette API fonctionne dans une API synchrone/impérative et est utilisée pour les deux implémentations de l'API de modèle (impérative et réactive).

Réutilisation de MappingMongoConverter était la décision logique lors de l'ajout d'un support réactif car nous n'avons pas besoin de dupliquer le code. La seule limitation est DBRef résolution qui ne correspond pas au modèle d'exécution réactif.

Pour prendre en charge DBRef réactif s, le convertisseur doit être divisé en plusieurs bits et toute la gestion de l'association nécessite une refonte.

Référence :https://jira.spring.io/browse/DATAMONGO-2146

Recommandation

Conservez les références en tant que clés/identifiants dans votre modèle de domaine et recherchez-les si nécessaire. zipWith et flatMap sont les opérateurs appropriés, en fonction de ce que vous souhaitez archiver (améliorer le modèle avec des références, rechercher des références uniquement).

Sur une note connexe:Reactive Spring Data MongoDB est partiellement livré avec un ensemble de fonctionnalités réduit. L'extension SpEL contextuelle est une fonctionnalité qui n'est pas prise en charge car ces composants supposent un modèle de programmation impératif et donc une exécution synchrone.