首页 > 解决方案 > 我在 mongodb 查询中得到 `""` (确切的短语)

问题描述

我想要一个不区分单词和不区分大小写的查询。我使用以下查询创建了/.*#{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,它不会给我任何东西。

我看到我""进入了搜索词,这意味着exact phrase在 mongodb 中,但是 idk [原文如此] 为什么我得到这些""以及如何删除它们。

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

任何帮助将不胜感激。

标签: ruby-on-railsmongodbmongoid

解决方案


您能否在不使用 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

推荐阅读