Nie możesz tego osiągnąć za pomocą @Query
. Inne możliwe alternatywy to
-
Utwórz dwie metody w klasie Repository. Jeden, który przyjmuje tylko id i drugi, który przyjmuje id i inne argumenty. W swojej klasie usług możesz zdecydować, do której z nich zadzwonić, na podstawie posiadanych danych. (Nieskalowalny)
-
Użyj QueryDsl. Dzięki temu możesz tworzyć kryteria wyszukiwania na podstawie danych, które posiadasz dynamicznie. Kilka pomocnych linków
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#core.extensions.querydsl
http://www.baeldung.com/queries-in -wiosna-data-mongodb - Możesz użyć
Example
. Tu to link do dokumentacji.(Ma to pewne ograniczenia)
Z mojego osobistego doświadczenia wynika, że używanie QueryDsl jest najlepszym sposobem radzenia sobie z tymi przypadkami i można je łatwo rozszerzyć o dalsze zmiany wymagań.