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

问题描述:

我想根据数组中的项目数选择一组项目。希望下面的例子来阐明我比较差的解释:根据MongoMapper的数组大小在MongoDB中订购商品?

class Thing 
    include MongoMapper::Document 

    key :name, String 
    key :tags, Array 
end 

我想检索所有Thing期从那些最标记那些用最少订购。这个例子中的标签只是标签数组中的字符串。基本上我想要的东西意味着与此相同(但作品):

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

这可能吗?

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

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

+0

啊,够公平 - 我认为这是支持的。感谢您的替代建议,这听起来像是我最好的选择。 – 2010-01-24 16:26:55