我想根据数组中的项目数选择一个订购的项目集合。希望下面的例子能说明我的解释很差:
class Thing
include MongoMapper::Document
key :name, String
key :tags, Array
end
我想检索从具有最多标签的那些订购的所有Thing
到最少的那些。此示例中的标记只是标记数组中的字符串。基本上我想要的东西与此相同(但有效):
Thing.all(:order => 'tags.count desc')
这可能吗?
答案 0 :(得分:3)
核心服务器目前不支持计算数组的大小,然后按此排序。我认为目前最好的选择是自己缓存数组大小,并在该字段上添加索引。
class Thing
include MongoMapper::Document
key :name, String
key :tags, Array
key :tag_size, Integer, :default => 0, :index => true
end
然后只需在模型中添加一个回调,以便在保存时更新tag_size。
如果这是您希望在核心服务器中看到的功能,可以在此处添加一个案例: