mongoid排序问题

Gag*_*gan 3 sorting model mongoid

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

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

我不想遍历父节点,找到dependents的数量,将它们存储在一个数组中并将它们转储到我的视图中.

我需要的是只用一个查询根据家属的数量对父母进行排序.那可能吗?

谢谢.

bow*_*ior 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
Run Code Online (Sandbox Code Playgroud)

那你的排序就是:

MyModel.asc(:thing_count)
Run Code Online (Sandbox Code Playgroud)

Mongoid还没有为排序提供良好的查询机制,但添加非规范化计数字段非常简单,并且可能更好地提高性能.希望这可以帮助!