Mongodb 按子文档数排序mongoid

Mongodb 按子文档数排序mongoid,mongodb,mongoid,Mongodb,Mongoid,我有一个有很多评论的模范人物 如何按评论数对人员集合进行排序 差不多 Person.desc:comments.count 看看mongo文档中的orderby功能:您不能同时处理两个集合,因此您需要亲自进行排序。通常的方法是使用计数器缓存来缓存每个人的评论数量。你会有这样的东西: class Person include Mongoid::Document has_many :comments end class Comment include Mongoid::Document

我有一个有很多评论的模范人物

如何按评论数对人员集合进行排序

差不多

Person.desc:comments.count


看看mongo文档中的orderby功能:

您不能同时处理两个集合,因此您需要亲自进行排序。通常的方法是使用计数器缓存来缓存每个人的评论数量。你会有这样的东西:

class Person
  include Mongoid::Document
  has_many :comments
end
class Comment
  include Mongoid::Document
  belongs_to :person, :counter_cache => true
end
:counter\u cache=>true选项to beliens\u to将向Person添加一个comments\u count字段,该字段将包含缓存的注释数

拥有计数器缓存后,您可以说:

Person.desc('comments_count')
让你分类


您需要手动使用或初始化计数器才能开始工作。

您的评论嵌入到您的员工中,因此您的评论是关于您的员工的?我认为计数器缓存仍然是最干净的方法。