Как вы выполняете подстановочный поиск с помощью Mongoid в среде Ruby on Rails?
Документация Mongoid дает только один пример выполнения поиска подстановочных знаков:
Person.where(first_name: /^d/i)
Это находит всех людей с первым именем, начинающимся с "d".
Что означают /^
и /i
?
Как мне найти всех людей с их именем, имеющих "na" в середине строки? Например, этот запрос найдет "jonathan", так как "na" является подстрокой всей строки.
Есть ли сайт или руководство с этой информацией?
Ответы
Ответ 1
Вам нужно это, чтобы найти людей с именем "na" в названии.
Person.where(first_name: /na/i)
Что касается вашего примера:
Person.where(first_name: /^d/i)
^
означает "начало строки". Это регулярное выражение будет соответствовать всем строкам, где первая буква "d". /i
означает "делать нечувствительные к регистру соответствия". Таким образом, он будет соответствовать как "d", так и "D".
Примечание: только префиксные regexes (с ^
впереди) могут использовать индексы.
Есть ли сайт или руководство с этой информацией?
Здесь мой любимый.
Ответ 2
Это не "подстановочный" поиск, это называется регулярным выражением.
/^d/i
- Две слэши - это только ограничители регулярных выражений, вы ищете то, что находится между этими двумя чертами.
- Следующий
i
является модификатором или опцией. Он изменяет поведение соответствия вашего регулярного выражения, i
означает регистр, нечувствительный к регистру, означает, что он соответствует "d" и "D".
- Первый символ
^
является якорем, он привязывает шаблон поиска к началу строки, означает совпадение "d" только в начале строки
Хорошим руководством по регулярным выражениям является учебник по regular-expressions.info
Если вы хотите найти строку в любом месте строки, просто удалите привязку, которая привязывает шаблон к началу, /na/
найдет "na" в любом месте строки.