2016-05-03 61 views
0

在Rails中,我試圖通過提供正則表達式使用LIKE查詢從mongodb中獲取數據,但即使沒有得到正確的輸出。Rails 4 + MongoDB +搜索查詢LIKE沒有給出正確的輸出

型號:用戶

_id, name, display_name, age, address, nick_name 
a1, Johny, Johny K, 12, New York, John 
b1, James, James Waltor, 15, New York, James 
c1, Joshua, Joshua T, 13, California, Josh 

現在我有3個記錄集。

查詢1:具有搜索用戶「喬」作爲關鍵字在初始名稱

User.where(name: /^jo/i) 

輸出 - 只有一個記錄 - 而不是兩個。

查詢2: - 匹配所有列文本值

User.where($where: /^jo/i) 

沒有得到適當的輸出。

回答

0

對於查詢1,確定可以輸出文檔。我相信你的'名字'中的一個記錄在它前面有一個字符,比如空格。我只是在本地運行相同的查詢,並將多個記錄拉回。

試試這個: User.where(name/(.*)jo(.*)/i).count看看會有什麼回報。它應該匹配2.如果這有效,那麼您需要查看商店價值的不正確。

在查詢2上,您看到過哪些語法? $where期望執行一個js函數的字符串來匹配記錄。在你的情況下,將文檔中的任何字段與表達式相匹配,您需要在每個文檔的每個字段之間執行遞歸功能。

0

對於查詢2匹配所有字段 一個解決方案雖然效率低下,但要在Rails應用程序中執行而不是Mongodb查詢。

例如 User.all.select do | user | user.attributes.values.grep(/^jo/i).any? end