使用Mongoid进行不区分大小写的排序

时间:2010-12-20 16:37:33

标签: ruby-on-rails ruby mongodb mongoid

现在我得到了:

@directories = collection.directories.all.asc(:name)

但它区分大小写,我该如何进行不区分大小写的排序?

5 个答案:

答案 0 :(得分:16)

目前您 无法 在MongoDB中创建不区分大小写的索引,请参阅...

http://jira.mongodb.org/browse/SERVER-90

所以,似乎这意味着你不能做不区分大小写的“排序”。

如果您觉得有用,可以通过上面的链接提交该功能,以便将来包含在MongoDB中。

来自10Gen的Eliot Horowitz(MongoDB的支持者)在此期间建议:

  

短期内 - 我只想添加一个   您调用.toLower()的第二个字段   在插入之前。然后你可以排序   在那。

答案 1 :(得分:4)

  

您可能需要存储   场地两次,一次具有真正的价值,   并再次全部小写。您可以   然后查询小写版本   不区分大小写的搜索(不要忘记   也小写查询字符串)。

     

此方法有效(或必要)   对于许多数据库系统,它   应该比常规表现更好   基于表达的技术(至少   用于前缀或完全匹配)。

选中此answer

答案 2 :(得分:2)

如果您的收藏不会导致内存崩溃(99%的情况下),只需在那里进行排序:

Blah.all.sort_by{|i| i.blah_field.downcase}

答案 3 :(得分:-2)

我认为你必须使用regex

编辑:可能不是,虽然https://jira.mongodb.org/browse/SERVER-90

已请求该功能

答案 4 :(得分:-4)

regexsearch = Regexp.new(params[:search], true)

@users = User.where(:email => regexsearch).all

应该这样做:)