我有一个网页,用户可以在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中看起来很丑,但起作用。 –