1

我有一个带有 mongo 和 mongoid 的 Rails 3.2.x 应用程序。我想在我的模型中定义一个“范围”,按名称对我的“用户”进行排序。问题是排序应该不区分大小写,mongo 本身不支持。

有没有办法使用范围正确地做到这一点?

4

2 回答 2

0

这是一个需要持久计算字段模式的经典案例。

假设您要排序的字段称为name。在您的模型中,捕获分配name并设置您可以查询的附加字段。例如:

def name=(value)
    self['name'] = value
    self['_lc_name'] = value.downcase
end

您不需要将计算字段定义为 Mongoid 字段。

在 Mongoid 中创建一个索引_lc_name以便更快地进行排序。index

于 2012-12-20T01:23:40.983 回答
-1

您必须使用mongodb 聚合框架来实现这一点。

一个快速的总结是,您可以执行类似管道的命令来实现此目的(如在 unix 中)。您可以使用聚合框架执行“n”个操作。

于 2012-12-19T20:17:32.613 回答