我在mongodb查询中得到了``“`(精确短语)

问题描述 投票:0回答:1

我想要一个不敏感且不区分大小写的查询。我使用/.*#{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 [原文如此]为什么我得到这些""以及如何删除它们。

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

任何帮助将受到高度赞赏。

ruby-on-rails mongodb mongoid
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.