Реализация оператора Like с использованием шаблона mongotemplate в приложении Springboot

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

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

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

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

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

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

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

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


person Mohan Kumar    schedule 10.10.2019    source источник
comment
Возможный дубликат Как запросить MongoDB с подобным?   -  person pvpkiran    schedule 10.10.2019


Ответы (1)


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

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

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

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

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

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

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

person Mohan Kumar    schedule 10.10.2019