2010-12-03 132 views
3

我一直在使用mongoid来存储数据。我有一个场景,我必须根据他们的家属数量对父母进行分类。我的模式很简单:mongoid排序问题

父模型references_many家属stored_as => array
依赖模型reference_many父母stored_as => array

我不想遍历父母,找到家属的数量,将其存储在一个数组,并把它们扔掉进入我的观点。

我需要的是根据只用一个查询家属人数家长进行排序。 这可能吗?

感谢。

回答

8

您必须添加一个字段,其中包含依赖项数量的计数并通过回调保持最新。喜欢的东西:

class MyModel 
    include Mongoid::Document 

    references_many :things 
    field :thing_count, :type => Integer 

    before_update :set_thing_count 
    def set_thing_count 
    self.thing_count = self.things.count 
    end 
end 

那么你的排序也只是:

MyModel.asc(:thing_count) 

Mongoid不提供各种良好的查询机制还没有,但加入了非规范化数场是很容易的,可能会更好无论如何表现。希望这可以帮助!