#spring-data-mongodb
Вопрос:
Можно ли использовать предложение IN в spring data mongodb с учетом регистра?
Например, в моей Customer
модели есть поле email
, и я хочу получить список клиентов из списка писем, которые у меня есть.
Обычно в JPA я могу получить список клиентов по электронной почте, используя findAllByEmailIn(List<String> emails)
Я подумываю о том, чтобы установить электронные письма в нижний регистр, но это все еще не так безопасно, как без учета регистра.
Что-то вроде:
findAllByEmailIn(emails.stream().map(String::toLowerCase).collect(Collectors.toList()))
или
Query query = new Query();
query.addCriteria(where("email").in(emails.stream()
.map(String::toLowerCase).collect(Collectors.toList())));
return m_mongoTemplate.find(query, Customer.class);
Есть ли способ использовать предложение IN с нечувствительностью к регистру? Либо с помощью магии JPA findAllBy, либо с помощью критериев запроса?
Ответ №1:
Вы можете попробовать использовать регулярное выражение
{ email: { $in: [ /^test1@Gmail.Com/i, /^TEST2@gmail.COM/i ] } }
Комментарии:
1. да, это еще одно решение, но оно не такое чистое, как я ожидал. С помощью этого мне нужно изменить электронные письма, чтобы преобразовать их в регулярное выражение.