我一直在用mongoid存储数据。我有一个场景,我必须根据他们的家属数量对父母进行排序。我的模型很简单:
父模型references_many dependents stored_as => array
依赖模型reference_many父母stored_as => array
我不想遍历父母,找到家属的数量,将它们存储在一个数组中并将它们转储到我的视图中。
我需要的是只需一个查询就可以根据家属的数量对父母进行排序。 这可能吗?
感谢。
答案 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还没有为排序提供良好的查询机制,但添加非规范化计数字段非常简单,并且可能更好地提高性能。希望这有帮助!