我有一個網頁,用戶可以在mongoDB集合中搜索文檔。 我得到了用戶的輸入通過@q = params[:search].to_s
通過用戶輸入的多參數搜索 - ruby on rails&mongodb
我然後運行一個查詢mongoid:
@story = Story.any_of({ :Tags => /#{@q}/i}, {:Name => /#{@q}/i}, {:Genre => {/#{@q}/i}})
此,如果用戶尋找像'幽默「浪漫喜劇片」或「神祕」工作正常。但是如果尋找「浪漫小說」,什麼都不會出現。
基本上我想爲我的搜索添加'和''或'功能,以便它可以在數據庫中查找與用戶輸入到輸入字段中的所有字符串相關的文檔。
如何在保持我目前擁有的子字符串搜索功能的同時完成此操作?
在此先感謝您的幫助!
更新:下面 每尤金的評論... 我試圖轉換爲區分與@q.map! { |x| x="/#{x}/i"}
不敏感。它確實保存爲["/romantic/i","/comedy/i"]
。但查詢Story.any_of({:Tags.in => @q}, {:Story.in => @q})
找不到任何東西。 當我更改數組爲["Romantic","Comedy"]
。然後它確實。 我該如何正確使它不區分大小寫?
最後:
刪除引用工作。 但是,現在無法使用.and()
搜索來查找在所有這些字段中都包含詞的書。
看到我的最後一條評論。這是否解決了這個問題? –
是的,它確實!謝謝 – Gcap
如果有人在這兩年之後絆倒了,可以使用簡單的mongo語法進行AND請求。這將是沿線︰ 查詢= {「$和」=> [{標籤:/浪漫/我},{標籤:/喜劇/我]} @ story = Story.where(query) $和運算符會傳遞一個對象數組,這些對象都必須匹配以匹配最終結果。在Ruby中看起來很醜,但起作用。 –