有没有办法从 ruby mongoid 查询中 return has_many 计算字段值?

Is there a way to return a has_many calculated field value from a ruby mongoid query?

我的目标是避免多次数据库查询,一次性搞定

我有一个名为 Sponsor 的文档对象模型,它 has_many players

class Sponsor
  include Mongoid::Document
  has_many :players
  field :name, type: String

  # . . .
end

class Player
  include Mongoid::Document
  belongs_to :sponsor, inverse_of: :players
  field :name, type: String
end

我想获得我的 Sponsorplayers 的数量,但我希望通过在 Sponsor

class Sponsor
 # . . .

  def self.return_all_with_player_count
    # do something to get object with injected player count
  end

end

# Sponsor.return_all_with_player_count => [{name: 'Someone 1', player_count: 2}, {name: 'Someone 2', player_count: 12}]

## 编辑

这是 scope 以某种方式使用的地方吗?

尝试这个实现,它将return方法return_all_with_player_count所期望的。

  def self.return_all_with_player_count
    all.map do |sponsor|
      { name: sponsor.name, player_count: sponsor.players.count }
    end
  end

scope 就像一个过滤器,不适合这种情况。