mongoid排序问题

时间:2010-12-03 11:28:23

标签: sorting model mongoid

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

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

我不想遍历父母,找到家属的数量,将它们存储在一个数组中并将它们转储到我的视图中。

我需要的是只需一个查询就可以根据家属的数量对父母进行排序。 这可能吗?

感谢。

1 个答案:

答案 0 :(得分: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还没有为排序提供良好的查询机制,但添加非规范化计数字段非常简单,并且可能更好地提高性能。希望这有帮助!