Mongoid文档仅提供了一个进行通配符搜索的示例:
Person.where(first_name: /^d/i)
这会找到名字以“d”开头的所有人。
/^
和/i
代表什么?
如何在字符串中间找到名字中包含“na”的所有人?例如,这个查询会找到“jonathan”,因为“na”是整个字符串的子字符串。
是否有关于此信息的网站或指南?
答案 0 :(得分:37)
您需要这样才能找到名字中包含“na”的人。
Person.where(first_name: /na/i)
至于你的例子:
Person.where(first_name: /^d/i)
^
表示“行首”。此正则表达式将匹配第一个字母为“d”的所有字符串。 /i
表示“执行不区分大小写的匹配”。所以它会匹配“d”和“D”。
注意:只有前缀regexes(前面有^
)才能使用索引。
是否有关于此信息的网站或指南?
这是my favourite。
答案 1 :(得分:4)
这不是“通配符”搜索,这称为正则表达式。
/^d/i
i
是修饰符或选项。它会更改正则表达式的匹配行为,i
代表不区分大小写,表示它匹配“d”和“D”。^
是一个锚,它将搜索模式锚定到字符串的开头,意味着仅在字符串的开头匹配“d”关于正则表达式的一个很好的教程是tutorial on regular-expressions.info
如果要在字符串中的任何位置搜索字符串,只需删除将模式绑定到开头的锚点,/na/
将在字符串中的任何位置找到“na”。