tl;dr
Il aura besoin d'implémentations personnalisées pour le référentiel et le contrôleur.
Détails
Nous devons nous assurer de ne pas nous perdre dans tous les différents aspects que vous mentionnez ici. Je vais essayer de démêler les branches de bas en haut :
Exécuter des scripts MongoDB
En tant que documentation de référence sur l'exécution de scripts avec MongoDB
états (et vous avez déjà découvert), la fonctionnalité est fournie by MongoTemplate
ScriptOperations
de . Ainsi, comment utiliser cette API devrait être clair. Consultez la Javadoc pour plus d'informations.
Exécuter des scripts via les référentiels Spring Data
La prochaine chose que vous demandez est d'exécuter ces scripts via l'abstraction du référentiel. Pour ne pas jeter le bébé avec l'eau du bain ici, assurez-vous que nous comprenons le but d'un référentiel :il simule une collection de racines agrégées et y accède sans exposer le mécanisme de persistance sous-jacent . Exposer des types comme ExecutableMongoScript
sur le référentiel briserait ce dernier trait. Ainsi, l'approche correcte ici consiste à créer une implémentation personnalisée pour cette fonctionnalité particulière, comme décrit dans le documentation de référence sur les référentiels Spring Data
.
Exposer la fonctionnalité via REST
Je suppose que vous faites référence à la fonctionnalité de Spring Data REST pour exposer une ressource dédiée à la méthode de requête du référentiel dans votre question. Actuellement, Spring Data REST n'expose automatiquement que les méthodes de requête déclaratives, principalement parce qu'il est difficile de raisonner sur la bonne méthode HTTP à prendre en charge pour les implémentations personnalisées, car nous ne pouvons pas deviner ce qui se passe à l'intérieur de la méthode.
La méthode recommandée pour exposer les méthodes de requête de référentiel personnalisées à l'aide d'un contrôleur personnalisé avec un @RequestMapping
en fonction de votre objectif, en appelant le référentiel et en utilisant un PersistentEntityResourceAssembler
injectable dans la méthode du gestionnaire pour produire un PersistentEntityResource
pour revenir.