2010-01-24 50 views
3

我想根據數組中的項目數選擇一組項目。希望下面的例子來闡明我比較差的解釋:根據MongoMapper的數組大小在MongoDB中訂購商品?

class Thing 
    include MongoMapper::Document 

    key :name, String 
    key :tags, Array 
end 

我想檢索所有Thing期從那些最標記那些用最少訂購。這個例子中的標籤只是標籤數組中的字符串。基本上我想要的東西意味着與此相同(但作品):

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

這可能嗎?

回答

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

+0

啊,夠公平 - 我認爲這是支持的。感謝您的替代建議,這聽起來像是我最好的選擇。 – 2010-01-24 16:26:55