#mongodb #spring-data-mongodb
#mongodb #spring-data-mongodb
Вопрос:
Как выполнить вложенный запрос в MongoDB для еще двух полей? У меня есть документ JSON, подобный приведенному ниже, и я хочу выполнить запрос, используя как sample2Cd, так и sample3Cd. Как мы можем это сделать?
Я мог написать так, но это не работает!!
Currency findByCountries_Sample2CdAndsample3CdAndNumberCode
Вот мой документ
{
"_id" : ObjectId("5c8a65026161ce4970e85035"),
..........
..............
"countries" : [
{
.......
"sample2Cd" : "AB",
"sample3Cd" : "ABC",
"numberCode" : "1"
......
}
]
}
Комментарии:
1. Не уверен, что вы можете добиться этого с помощью Spring Data query builder, но вы пытались
findByCountries_Sample2CdAndCountries_sample3CdAndCountries_NumberCode
?
Ответ №1:
Вы можете написать spring repo
метод, подобный приведенному ниже.
List<Currency> findByCountriesSample2CdAndCountriesSample3CdAndCountriesNumberCode(String param1,String param2, String param3);
Если комбинация будет уникальной, то вы можете изменить возвращаемый тип на object вместо списка, как показано ниже.
Currency findByCountriesSample2CdAndCountriesSample3CdAndCountriesNumberCode(String param1,String param2, String param3);
Комментарии:
1. Это не работает
Invalid derived query! No property countriesSample2Cd found for type Currency!
Ответ №2:
Я смог решить эту проблему с помощью проекции @Query. Поехали!
@Query(value = "{'countries.sample2Cd' : ?0, 'countries.sample3Cd' ?1 }")
List<Currency> findByCountriesSample2CdAndSample3Cd(String param1,String param2);
Примечание: Аналогично wise, вы можете использовать несколько параметров, сформировать запрос и получить результат.