我在mongodb查询中得到“””(确切的短语)

时间:2019-02-13 10:33:21

标签: ruby-on-rails mongodb mongoid

我想查询一个单词不区分大小写的查询。我使用/.*#{params[:query]}*./i创建了以下查询:

def set_query
  @query = params[:query]
end

def set_documents
  @documents = @folder ? @folder.documents : current_user.documents
  @documents = (params[:query] ? @documents.where(
    :$text => {:$search => (/.*#{params[:query]}*./i).to_s}
  ) : @documents).page(params[:page])
end

但是,当我搜索时,它是单词敏感的:rehabilitation会给我标题中带有rehabilitation的文档,但是如果我使用rehab进行搜索,它不会给我任何东西。

我看到我在搜索词中得到"",这在mongodb中表示exact phrase,但是idk [sic]为什么我得到这些""以及如何删除它们。 / p>

"$text"=>{"$search"=>"(?i-mx:.*rehab*.)"},

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

是否可以不使用to_s而尝试相同的查询。

def set_documents
@documents = @folder ? @folder.documents : current_user.documents
@documents = (params[:query] ? @documents.where(
  :$text => {:$search => (/.*#{params[:query]}*./i)}
) : @documents).page(params[:page])
end