Весенние данные mongodb в предложении без учета регистра

#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. да, это еще одно решение, но оно не такое чистое, как я ожидал. С помощью этого мне нужно изменить электронные письма, чтобы преобразовать их в регулярное выражение.