tl;dr
Będzie potrzebować niestandardowych implementacji dla repozytorium i kontrolera.
Szczegóły
Musimy się upewnić, że nie gubimy się we wszystkich aspektach, o których tu wspominasz. Spróbuję rozplątać gałęzie od dołu do góry:
Wykonywanie skryptów MongoDB
Jako dokumentacja referencyjna dotycząca wykonywania skryptów za pomocą MongoDB
stanów (i już to odkryłeś), funkcjonalność jest dostarczana przez by MongoTemplate
ScriptOperations
. Tak więc, jak korzystać z tego API, powinno być jasne. Więcej informacji znajdziesz w dokumentacji Javadoc.
Wykonywanie skryptów za pośrednictwem repozytoriów Spring Data
Następną rzeczą, o którą prosisz, jest wykonanie tych skryptów przez abstrakcję repozytorium. Aby nie wylewać dziecka z kąpielą tutaj, upewnij się, że rozumiemy cel repozytorium:symuluje gromadzenie zbiorczych korzeni i dostęp do niego bez ujawniania podstawowego mechanizmu utrwalania . Udostępnianie typów, takich jak ExecutableMongoScript
w repozytorium złamałoby tę ostatnią cechę. Dlatego właściwym podejściem jest tutaj stworzenie niestandardowej implementacji dla tej konkretnej funkcjonalności, jak opisano w dokumentacja referencyjna repozytoriów Spring Data
.
Ujawnianie funkcjonalności przez REST
Zakładam, że odwołujesz się do funkcji Spring Data REST, aby udostępnić w swoim pytaniu dedykowany zasób dla metody zapytania repozytorium. Spring Data REST obecnie udostępnia automatycznie tylko deklaratywne metody zapytań, głównie z tego powodu, że trudno jest określić poprawną metodę HTTP do obsługi niestandardowych implementacji, ponieważ nie możemy odgadnąć, co dzieje się wewnątrz metody.
Zalecany sposób ujawnienia niestandardowych metod zapytań repozytorium przy użyciu niestandardowego kontrolera z @RequestMapping
zgodnie z twoimi celami, wywołując repozytorium i używając PersistentEntityResourceAssembler
można wstrzyknąć do metody obsługi, aby wytworzyć PersistentEntityResource
wrócić.