首页 > 解决方案 > 查询不适用于 mongoid 中的半字

问题描述

我已经在 rails 中编写了这个查询,但它只在我写整个单词时给我文档,例如当我写Statement它时,它给了我所有包含单词 Statement 但如果我写Stat它不会给我任何文档。所以查询是单词敏感的,我努力使它不敏感,但不知何故不起作用,我知道为什么。

def set_query
  @query = params[:query]
end


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

任何帮助将不胜感激。

标签: ruby-on-railsmongodbmongoid

解决方案


尝试使用不区分大小写的正则表达式搜索。

def set_documents
  @documents = @folder ? @folder.documents : current_user.documents
  @documents = (params[:query] ? @documents.where(
      {'name': {'$regex': @query, '$options': i}}).page(params[:page])
end

推荐阅读