Как вы выполняете поиск по шаблону с Mongoid в среде Ruby on Rails? - PullRequest
15 голосов
/ 30 марта 2012

В документации Mongoid приведен только один пример поиска по шаблону:

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

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

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

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

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

Ответы [ 2 ]

38 голосов
/ 30 марта 2012

Вам нужно это, чтобы найти людей с "na" в имени.

Person.where(first_name: /na/i)

Что касается вашего примера:

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

^ означает «начало строки». Это регулярное выражение будет соответствовать всем строкам, где первая буква - «d». /i означает «делать совпадения без учета регистра». Так что это будет соответствовать и "d" и "D".

Примечание : только регулярные выражения префикса (с ^ впереди) могут использовать индексы.

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

Вот мой любимый .

4 голосов
/ 30 марта 2012

Это не поиск по шаблону, это регулярное выражение.

/^d/i
  • Эти две косые черты являются только разделителями регулярных выражений, вы ищете, что находится между этими двумя косыми чертами.
  • Следующий i является модификатором или опцией. Он изменяет поведение сопоставления вашего регулярного выражения, i обозначает нечувствительный к регистру, означает, что он соответствует "d" и "D".
  • Первый символ ^ является привязкой, он привязывает шаблон поиска к началу строки, означает совпадение «d» только в начале строки

Хорошим руководством по регулярным выражениям является руководство по регулярным выражениям .info

Если вы хотите найти строку в любом месте строки, просто удалите якорь, который связывает шаблон с началом, /na/ найдет "na" в любом месте строки.

...