tl;dr
Necesitará implementaciones personalizadas para el repositorio y el controlador.
Detalles
Tenemos que asegurarnos de no perdernos en todos los diferentes aspectos que mencionas aquí. Intentaré desenredar las ramas de abajo hacia arriba:
Ejecución de secuencias de comandos MongoDB
Como documentación de referencia sobre la ejecución de scripts con MongoDB
estados (y ya lo descubrió), la funcionalidad es proporcionada por by MongoTemplate
's ScriptOperations
. Por lo tanto, debe quedar claro cómo usar esa API. Consulte el Javadoc para obtener más información.
Ejecución de scripts a través de repositorios Spring Data
Lo siguiente que está pidiendo es ejecutar esos scripts a través de la abstracción del repositorio. Para no tirar al bebé con el agua del baño aquí, asegúrese de entender el propósito de un depósito:simula una colección de raíces agregadas y el acceso a ellas sin exponer el mecanismo de persistencia subyacente . Exponiendo tipos como ExecutableMongoScript
en el repositorio rompería este último rasgo. Por lo tanto, el enfoque correcto aquí es crear una implementación personalizada para esa funcionalidad en particular, como se describe en documentación de referencia sobre repositorios Spring Data
.
Exponiendo la funcionalidad a través de REST
Supongo que se refiere a la función REST de Spring Data para exponer un recurso dedicado para el método de consulta del repositorio en su pregunta. Spring Data REST actualmente solo expone métodos de consulta declarativos automáticamente, principalmente porque es difícil razonar sobre el método HTTP correcto para admitir implementaciones personalizadas, ya que no podemos adivinar lo que sucede dentro del método.
La forma recomendada de exponer métodos de consulta de repositorio personalizados usando un controlador personalizado con un @RequestMapping
adaptándose a su propósito, llamando al repositorio y usando un PersistentEntityResourceAssembler
inyectable en el método del controlador para producir un PersistentEntityResource
para volver.