tl;dr
Ini akan membutuhkan implementasi khusus untuk repositori dan pengontrol.
Detail
Kami harus memastikan kami tidak tersesat dalam semua aspek berbeda yang Anda sebutkan di sini. Saya akan mencoba mengurai ranting-rantingnya dari bawah ke atas:
Mengeksekusi skrip MongoDB
Sebagai dokumentasi referensi tentang menjalankan skrip dengan MongoDB
menyatakan (dan Anda sudah menemukan), fungsionalitasnya disediakan by MongoTemplate
ScriptOperations
. Jadi cara menggunakan API itu harus jelas. Konsultasikan Javadoc untuk informasi lebih lanjut.
Mengeksekusi skrip melalui repositori Spring Data
Hal berikutnya yang Anda minta adalah menjalankan skrip tersebut melalui abstraksi repositori. Untuk tidak membuang bayi dengan air mandi di sini, pastikan kita memahami tujuan dari repositori:ini mensimulasikan kumpulan akar agregat dan mengaksesnya tanpa mengekspos mekanisme persistensi yang mendasarinya . Mengekspos tipe seperti ExecutableMongoScript
pada repositori akan merusak sifat yang terakhir. Jadi pendekatan yang benar di sini adalah membuat implementasi khusus untuk fungsi tertentu seperti yang dijelaskan dalam dokumentasi referensi tentang repositori Spring Data
.
Mengekspos fungsionalitas melalui REST
Saya berasumsi Anda mengacu pada fitur Spring Data REST untuk mengekspos sumber daya khusus untuk metode kueri repositori dalam pertanyaan Anda. Spring Data REST saat ini hanya mengekspos metode kueri deklaratif secara otomatis, sebagian besar karena alasan sulit untuk mempertimbangkan metode HTTP yang benar untuk mendukung implementasi khusus karena kami tidak dapat menebak apa yang terjadi di dalam metode.
Cara yang disarankan untuk mengekspos metode kueri repositori kustom menggunakan pengontrol kustom dengan @RequestMapping
sesuai dengan tujuan Anda, memanggil repositori dan menggunakan PersistentEntityResourceAssembler
disuntikkan ke dalam metode handler untuk menghasilkan PersistentEntityResource
untuk kembali.