按子文档数排序
Sort by number of subdocuments mongoid
我有一个模型 Person
有很多 Comments
如何按 comments
的数量对人员集合进行排序
类似于
Person.desc(:"comments.count")
查看 mongo 文档中的 orderby 功能:http://docs.mongodb.org/manual/reference/operator/meta/orderby/
您不能真正同时处理两个集合,因此您需要 Person
中的某些内容,您可以对其进行排序。通常的做法是使用一个计数器缓存来缓存每个Person
中的评论数。你会有这样的东西:
class Person
include Mongoid::Document
has_many :comments
end
class Comment
include Mongoid::Document
belongs_to :person, :counter_cache => true
end
belongs_to
的 :counter_cache => true
选项将向 Person
添加一个 comments_count
字段,其中包含缓存的评论数。
一旦你有了计数器缓存,你可以说:
Person.desc('comments_count')
进行排序。
您需要使用 Person.reset_counters
or Person#reset_counters
手动初始化计数器才能开始。
我有一个模型 Person
有很多 Comments
如何按 comments
类似于
Person.desc(:"comments.count")
查看 mongo 文档中的 orderby 功能:http://docs.mongodb.org/manual/reference/operator/meta/orderby/
您不能真正同时处理两个集合,因此您需要 Person
中的某些内容,您可以对其进行排序。通常的做法是使用一个计数器缓存来缓存每个Person
中的评论数。你会有这样的东西:
class Person
include Mongoid::Document
has_many :comments
end
class Comment
include Mongoid::Document
belongs_to :person, :counter_cache => true
end
belongs_to
的 :counter_cache => true
选项将向 Person
添加一个 comments_count
字段,其中包含缓存的评论数。
一旦你有了计数器缓存,你可以说:
Person.desc('comments_count')
进行排序。
您需要使用 Person.reset_counters
or Person#reset_counters
手动初始化计数器才能开始。