如何在Ruby on Rails环境中使用Mongoid进行通配符搜索?

Goa*_*lie 16 regex ruby-on-rails mongodb mongoid

Mongoid文档仅提供了一个进行通配符搜索的示例:

Person.where(first_name: /^d/i)
Run Code Online (Sandbox Code Playgroud)

这会找到名字以"d"开头的所有人.

什么做/^/i代表什么?

我怎样才能找到名字中间有"na"的所有人?例如,此查询将找到"jonathan",因为"na"是整个字符串的子字符串.

有这些信息的网站或指南吗?

Ser*_*sev 39

你需要这个来找到名字中带有"na"的人.

Person.where(first_name: /na/i)
Run Code Online (Sandbox Code Playgroud)

至于你的例子:

Person.where(first_name: /^d/i)
Run Code Online (Sandbox Code Playgroud)

^意思是"行的开头".此正则表达式将匹配第一个字母为"d"的所有字符串./i意思是"做不区分大小写的匹配".所以它会匹配"d"和"D".

注意:只有前缀regexes(^在前面)才能使用索引.

有这些信息的网站或指南吗?

这是我的最爱.


ste*_*ema 5

这不是“通配符”搜索,这称为正则表达式。

/^d/i
Run Code Online (Sandbox Code Playgroud)
  • 这两个斜杠只是正则表达式分隔符,您可以搜索这两个斜杠之间的内容。
  • 以下i是修饰符或选项。它改变了您的正则表达式的匹配行为,i代表不区分大小写,表示它匹配“ d”和“ D”。
  • 第一个字符^是锚点,它将搜索模式锚定到字符串的开头,意味着仅在字符串的开头匹配“ d”

关于正则表达式的一个很好的教程是regular-expressions.info上教程。

如果要在字符串中的任何位置搜索字符串,只需删除将模式绑定到开头的锚点,即可/na/在字符串中的任何位置找到“ na”。