3

我想根据数组中的项目数选择一个排序的项目集合。希望下面的例子能澄清我相当糟糕的解释:

class Thing
  include MongoMapper::Document

  key :name, String
  key :tags, Array
end

我想检索Thing从标签最多到标签最少的所有 s。此示例中的标签只是标签数组中的字符串。基本上我想要一些与此相同的东西(但有效):

Thing.all(:order => 'tags.count desc')

这可能吗?

4

1 回答 1

3

核心服务器目前不支持计算数组的大小然后按其排序。我认为您目前最好的选择是自己缓存数组大小,并在该字段上添加索引。

class Thing
  include MongoMapper::Document

  key :name,     String
  key :tags,     Array
  key :tag_size, Integer, :default => 0, :index => true
end

然后只需向模型添加一个回调,在保存时更新 tag_size。

如果这是您希望在核心服务器中看到的功能,您可以在此处添加案例:

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

于 2010-01-24T16:09:00.490 回答