tl;dr
Avrà bisogno di implementazioni personalizzate per il repository e il controller.
Dettagli
Dobbiamo assicurarci di non perderci in tutti i diversi aspetti che stai menzionando qui. Proverò a districare i rami dal basso:
Esecuzione di script MongoDB
Come documentazione di riferimento sull'esecuzione di script con MongoDB
afferma (e l'hai già scoperto), la funzionalità è fornita da by MongoTemplate
ScriptOperations
di . Quindi come utilizzare quell'API dovrebbe essere chiaro. Consulta il Javadoc per maggiori informazioni.
Esecuzione di script tramite i repository Spring Data
La prossima cosa che stai chiedendo è l'esecuzione di quegli script attraverso l'astrazione del repository. Per non gettare qui il bambino con l'acqua del bagnetto, assicurati di aver compreso lo scopo di un deposito:simula una raccolta di radici aggregate e l'accesso ad esso senza esporre il meccanismo di persistenza sottostante . Esporre tipi come ExecutableMongoScript
sul repository interromperebbe quest'ultimo tratto. Quindi l'approccio corretto qui è creare un'implementazione personalizzata per quella particolare funzionalità come descritto in documentazione di riferimento sui repository Spring Data
.
Esposizione della funzionalità tramite REST
Presumo che ti riferisci alla funzione di Spring Data REST per esporre una risorsa dedicata per il metodo di query del repository nella tua domanda. Spring Data REST attualmente espone automaticamente solo metodi di query dichiarativi, principalmente per il motivo che è difficile ragionare sul metodo HTTP corretto da supportare per implementazioni personalizzate poiché non possiamo indovinare cosa sta succedendo all'interno del metodo.
Il modo consigliato per esporre metodi di query del repository personalizzati utilizzando un controller personalizzato con un @RequestMapping
adatto al tuo scopo, chiamando il repository e usando un PersistentEntityResourceAssembler
iniettabile nel metodo del gestore per produrre un PersistentEntityResource
per tornare.