有没有办法在mongoid中为不区分大小写的搜索设置属性?在mongoid中不区分大小写的搜索
可以说有人有一个用户名:IAmGreat,我想用他们唯一的用户名查找用户数据,而不用将其更改为iamgreat。
感谢
有没有办法在mongoid中为不区分大小写的搜索设置属性?在mongoid中不区分大小写的搜索
可以说有人有一个用户名:IAmGreat,我想用他们唯一的用户名查找用户数据,而不用将其更改为iamgreat。
感谢
为什么不下来User.login.downcase
(或任何模型/属性组合)在进行比较时?这将使数据库中的大写字母保持原样,但是只是为了比较而忽略了该字段。
其实你可以搜索不区分大小写。但你必须用正则表达式搜索! 下面是一个例子,我如何使用它在http://www.VersionEye.com
User.first(conditions: {email: /^#{email}$/i})
用“/”你在开始和结束的正则表达式。正则表达式之后的“i”表示不区分大小写。 “^”表示元素必须以搜索字符串开头,“$”表示元素必须以搜索字符串结尾。如果您正在寻找完全匹配,这一点很重要。如果您使用的是轨道或
User.where(username: /#{username}/i).first
你甚至可以尝试像
@user = User.where({:username => /.*#{name}.*/i })
(1)不敏感的平等(2)(AFAIK)不会使用索引来检查集合,因此它可能非常昂贵。 –
是的。这比默认查询慢50%。但它确实检查不区分大小写的相等性。 – mrudult
不,它不检查平等。你的正则表达式没有锚。 –
mongoid你可以试试FF:
FYI:你可能需要的,如果它来净化你的正则表达式包括用户输入:'/ ^#{Regexp.escape(email)} $/i' – Andrew
user = where(email:/^#{email}$/i).first – shilovk