Spring data MongoDB проверяет, содержит ли поле текст - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть поле в коллекции mongoDb "name", которое содержит:

"26.11.2018(2)"

Я использую выражение регулярного выражения для поиска, если какая-либо строка содержится в поле "name":

String search = "11.2018(2)";
return Criteria.where("name").regex(search);

Iесть исключение, что регулярное выражение неверно (из-за ")").Есть ли другая возможность для поиска, подобного этому?

1 Ответ

0 голосов
/ 29 ноября 2018

Вам нужно экранировать значение, которое используется в регулярном выражении.

Я не могу проверить это сейчас, но возможно, что это может работать:

String search = "some pattern(a)12.";
pattern = Pattern.compile(Pattern.escape(search));
return Criteria.where("name").regex(pattern);

https://mongodb.github.io/mongo-java-driver/3.4/javadoc/?com/mongodb/client/model/Filters.html

...