Подтвердить что ты не робот

Как вы выполняете подстановочный поиск с помощью Mongoid в среде Ruby on Rails?

Документация Mongoid дает только один пример выполнения поиска подстановочных знаков:

Person.where(first_name: /^d/i)

Это находит всех людей с первым именем, начинающимся с "d".

Что означают /^ и /i?

Как мне найти всех людей с их именем, имеющих "na" в середине строки? Например, этот запрос найдет "jonathan", так как "na" является подстрокой всей строки.

Есть ли сайт или руководство с этой информацией?

4b9b3361

Ответ 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" в любом месте строки.