如何查找相关文档数量最多的文档(用户数最多的帖子)?

时间:2012-08-21 07:20:43

标签: ruby-on-rails-3 mongoid

我要做的是找到帖子最多的用户。 UserPostMongoid::Document

相当于User.group(posts)的ActiveRecord不起作用。我可以通过@user.posts.count

访问用户的帖子数量

如何找到包含大多数帖子的用户,而不按帖子计数排序所有用户的数组?

2 个答案:

答案 0 :(得分:2)

当您使用:all。时,Mongoid集合会响应数组函数。

User.all.max_by {|user| user.posts.count}

迭代所有用户,找到帖子最多的用户。

答案 1 :(得分:0)

如果你想要一种类似于SQL的方法,数据库可以完成所有工作,那么就没有。 MongoDB没有连接,也没有SQL。如果保持数据模型不变,则只能迭代所有用户,为它们获取后期计数然后排序。

但是您可以通过将帖子计数保存到用户文档中的字段并保持实际(在添加新帖子时递增等)来消除此N+1查询模式。这称为“计数器缓存”,several plugins 执行此操作。

拥有该缓存列后,您可以毫无问题地对其进行排序。