Запрос MongoDb В SpringBoot используется MongoRepository - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть несколько параметров запроса (таких как имя, возраст, пол, местоположение и т. Д. И номера) в моем GET API.Теперь мне нужно запросить мою базу данных Монго, используя эти значения запроса.Теперь пользователь может отправлять от 0 до n параметров запроса.

Я пытаюсь использовать что-то вроде

findByNameAndAge(String Name , String Age)

Или

findByNameAndAgeAndGender(String Name , String Age, String Gender)

Но проблема у меня будетнаписать несколько запросов с учетом всех перестановок и комбинаций, которые может отправить пользователь.Есть ли лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019

В вашем случае вы можете использовать

<S extends T> Iterable<S> findAll(Example<S> example);

Итак, первый шаг - создать пример из параметров вашего запроса, для этого вам нужно создать экземпляр вашей сущности со значением желаемых атрибутов.быть запрошенным и нулевым для других атрибутов.Например, если у вас есть в запросе имя и возраст в качестве параметров.Таким образом, вы просто устанавливаете имя и возраст сущности и позволяете обнулить остальные атрибуты.Если у вас есть ваша сущность, вы должны просто создать пример и запросить его.

Example<ENTITY_CLASS> example = Example.of(createdEntity);
return repository.findAll((example);

Существует несколько других вариантов использования Example и ExampleMatcher для создания регистрозависимого startwith содержит содержит и регулярное выражение.Вы также можете установить, нужно ли ему использовать операторы OR или AND между полями.

Вы можете посмотреть здесь

0 голосов
/ 21 сентября 2019

Вам нужно испачкать руки классом операций Mongo и динамически построить запрос критериев на основе переданных параметров модели.Чтобы упростить задачу, вы можете придерживаться отображения имен параметров в соответствии с соглашением о свойствах объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...