使用MongoMapper根据数组的大小在MongoDB中订购商品?

时间:2010-01-24 09:56:57

标签: ruby mongodb mongomapper

我想根据数组中的项目数选择一个订购的项目集合。希望下面的例子能说明我的解释很差:

class Thing
  include MongoMapper::Document

  key :name, String
  key :tags, Array
end

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

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

这可能吗?

1 个答案:

答案 0 :(得分: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