Хорошо, хорошо, у меня была та же проблема, что и в этом вопросе:
Запрос регулярного выражения MongoDB: Почему это не работает?
В основном, если с помощью драйвера Java вы поместите свое регулярное выражение, такое как
new BasicDBObject("title", "/.*whatever.*/")
, оно не будет работать (хотя их документация и тест консоли mongo говорят, что должно)
однако,если вы используете более подробный способ объявления критериев регулярного выражения, он будет работать:
crit.put("works", new BasicDBObject("$elemMatch",new BasicDBObject("title",new BasicDBObject("$regex",".*whatever.*"))));
Это становится еще более запутанным.Если вы хотите, чтобы ваш шаблон регулярного выражения применялся без учета регистра, добавление пары значений имени $options:'i'
к объекту критерия регулярного выражения, например:
new BasicDBObject("$regex",".*whAteVer.*").put("$options","i")
, также не будет работать.
Вместо этогоВы должны поставить флаг регулярного выражения нечувствительности ВНУТРИ строки регулярного выражения следующим образом:
new BasicDBObject("$regex",".*((?i)whAteVer).*")