Você não pode fazer isso usando
@Query
. Outras alternativas possíveis são -
Crie dois métodos na classe Repository. Um que recebe apenas id e outro que recebe id e outros argumentos. E em sua classe de serviço, você pode decidir qual chamar com base nos dados em mãos. (Não escalável)
-
Use QueryDsl. Com isso, você pode criar critérios de pesquisa com base nos dados que possui dinamicamente. Alguns links úteis
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#core.extensions.querydsl
http://www.baeldung.com/queries-in -spring-data-mongodb
- Você pode usar
Example
. Aqui é o link para a documentação.(Isso tem algumas limitações)
Na minha experiência pessoal, o uso do QueryDsl é a melhor maneira de lidar com esses casos e pode ser facilmente estendido para outras alterações nos requisitos.