的Mongoid文檔只給出了做一個通配符搜索的一個例子:如何在Ruby on Rails環境中使用Mongoid進行通配符搜索?
Person.where(first_name: /^d/i)
這個發現與以「d」開頭的第一個名字所有的人。
/^
和/i
分別代表什麼?
我如何找到所有名字在字符串中間有「na」的人?例如,這個查詢會找到「jonathan」,因爲「na」是整個字符串的一個子字符串。
是否有網站或指導這些信息?
的Mongoid文檔只給出了做一個通配符搜索的一個例子:如何在Ruby on Rails環境中使用Mongoid進行通配符搜索?
Person.where(first_name: /^d/i)
這個發現與以「d」開頭的第一個名字所有的人。
/^
和/i
分別代表什麼?
我如何找到所有名字在字符串中間有「na」的人?例如,這個查詢會找到「jonathan」,因爲「na」是整個字符串的一個子字符串。
是否有網站或指導這些信息?
你需要這個來找到名字中帶有「na」的人。
Person.where(first_name: /na/i)
至於你的例子:
Person.where(first_name: /^d/i)
^
的意思是 「行首」。這個正則表達式將匹配所有第一個字母爲「d」的字符串。 /i
的意思是「不區分大小寫的匹配」。所以它會匹配「d」和「D」。
注意:只有前綴正則表達式(前面的^
)能夠使用索引。
Is there website or guide with this information?
這是my favourite。
這不是「通配符」搜索,這稱爲正則表達式。
/^d/i
i
是一個修飾符或選項。它改變了你的正則表達式的匹配行爲,i
代表不區分大小寫,意味着它匹配「d」和「D」。^
是一個錨,它錨定到字符串的開始搜索模式,意味着比賽「d」只在開始的字符串有關正則表達式一個很好的教程是tutorial on regular-expressions.info
如果要在字符串中的任意位置搜索字符串,只需刪除將該模式綁定到起始位置的錨,/na/
就會在字符串中的任意位置找到「na」。
+1鏈接到Rubular.com – Joe 2012-06-26 21:26:00
如果字段'first_name'的類型爲'Mongoid :: EncryptedString',是否可以像'Person.where(first_name:/ na/i)一樣進行查詢?我正在使用mongoid 3.1.6並獲取* TypeError:沒有將Regexp隱式轉換爲String *。 – 2017-01-24 08:29:37