ruby-on-rails - 查询不适用于 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
任何帮助将不胜感激。
解决方案
尝试使用不区分大小写的正则表达式搜索。
def set_documents
@documents = @folder ? @folder.documents : current_user.documents
@documents = (params[:query] ? @documents.where(
{'name': {'$regex': @query, '$options': i}}).page(params[:page])
end
推荐阅读
- awk - 如何在 linux 中使用 awk 或 cat 分隔列
- ruby-on-rails - act_as_state_machine 辅助方法 rails 6
- python-imaging-library - 在简单的 Pillow 模块示例中获取“write() 参数必须是 str,而不是字节”
- c# - EF Core:如何一次插入具有新的多个相关记录的新记录
- r - R会话终止数据丢失
- java - 在每个 Switch-case 后提示用户打印,除了 case:“0 exit”
- python-3.x - 编译的 Python 函数 Executable 不是单个文件并且不运行
- r - 在 df2 中识别 df1 中的元素,然后在 df2 中使用 R 重合的那些行中添加列
- laravel - Laravel Socialite Github 提供商电子邮件为空
- javascript - 动态更改占位符文本