ruby-on-rails - 我在 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*.)"},
任何帮助将不胜感激。
解决方案
您能否在不使用 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
推荐阅读
- c++ - 标准::复杂
乘以其他类型 - python-3.x - 从 CSV 文件下载图像
- c++ - 关于对象引用的混淆
- javascript - 对象中最后一行后的尾随逗号
- angular - 两种不同类型的数据
- algorithm - 如何解决 BST 问题?
- azure - 是否可以从 Microsoft.Azure.EventHubs 库迁移到 Azure.Messaging.EventHubs 而不会丢失检查点?
- java - 如何将 HashMap 数据保存在我电脑的任何位置?
- ms-access - 在 MS Access 的 Format 函数中使用变量时,数字的格式不正确
- javascript - 当测试和测试对象在不同文件中时,从其他文件模拟导入的函数