Rails 4 + MongoDB +搜索查询LIKE没有给出正确的输出

时间:2016-05-03 12:17:11

标签: ruby-on-rails-4 mongoid

在Rails中,我试图通过提供正则表达式来使用LIKE查询从mongodb获取数据,但即使没有得到正确的输出。

模特:用户

_id, name, display_name, age, address, nick_name
a1, Johny, Johny K, 12, New York, John
b1, James, James Waltor, 15, New York, James
c1, Joshua, Joshua T, 13, California, Josh

现在我有3组记录。

查询1:搜索具有' Jo'作为初始名称中的关键字

User.where(name: /^jo/i)

输出 - 只有一条记录 - 而不是两条。

查询2: - 将文本与所有列值匹配

User.where($where: /^jo/i)

没有得到正确的输出。

2 个答案:

答案 0 :(得分:0)

在查询1上确定,您可以输出文件吗?我相信你在'name'中的一个记录在它前面有一个字符,例如空格。我只是在本地运行相同的查询,它将多条记录拉回来。

试试这个: User.where(name/(.*)jo(.*)/i).count并查看返回的内容。它应匹配2.如果可行,那么您需要查看商店值的不正确之处。

在查询2中,您在哪里看到了这种语法。期待$where执行js函数的字符串以匹配记录。在您的情况下,要将文档中的任何字段与表达式匹配,您需要在每个文档中的每个字段上执行递归函数。

答案 1 :(得分:0)

使查询2与所有字段匹配 一种解决方案,虽然效率低,但是在Rails应用程序中而不是Mongodb查询中执行。

e.g。 User.all.select do | user | user.attributes.values.grep(/^jo/i).any? end