Реализация оператора Like с использованием mongotemplate в приложении Springboot - PullRequest
0 голосов
/ 10 октября 2019

В нашем приложении Spring Boot, использующем mongotemplate, мне нужно написать запрос, чтобы получить результаты, используя оператор LIKE. Но в mongotemplate, как и в SQL, у меня нет прямого запроса, который я могу использовать.

Я пробовал использовать некоторые параметры, такие как Aggregate и regex, но он не работал.

В MongoDB пробовал то же самое.

db.getCollection('Months').find({"name":/Jan/}).

Так что в months table я должен получить результаты, которые содержат буквы 'Jan' в столбце 'name'. Но при выполнении этого запроса предположим, что у меня есть запись с именем «DecJan», в этом случае я не могу ее извлечь.

Query constantQuery = new Query();``
constantQuery.addCriteria(Criteria.where("name").regex("DecJan", "i"));

List<Months> pp = this.mongoTemplate.find(constantQuery, Months.class);

Итак, ожидается, что у меня есть две записи в таблице, например «Январь». ',' DecJan 'И в запросе, если я передам' Jan ', мне нужно получить оба результата, используя mongotemplate.

1 Ответ

0 голосов
/ 10 октября 2019

Обновленная ссылка на дублирование не относится к необходимому экземпляру mongoTemplate.

Кстати, я использовал для этого агрегирование и получил результаты.

  1. СозданиеAggregationOperation
  2. Создание объекта Aggreation с требуемым соответствием.
  3. запрос с Mongotemplate.aggregate (AggregationOperation, Aggreation)

Пример кода: AggregationOperation aggregate = Aggregation.project () .and ("FirstName"). as ("name");

        AggregationOperation operation = Aggregation.match(Criteria.where("name").regex(pattern, "i"));

        Aggregation aggregation = Aggregation.newAggregation(aggregate, operation);

Теперь можно получить результаты.

...