Каков эффективный способ подсчета двухуровневой вложенной модели (с использованием mongoid или MongoDB в целом)? - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть следующие модели данных. В котором Project встраивает много ComponentDescriptor, а ComponentDescriptor встраивает много Statistic.

class Project
  include Mongoid::Document
  embeds_many :component_descriptors

  field :status, :type => Integer

  backgrounded :publish 
end

class ComponentDescriptor
  include Mongoid::Document
  include Mongoid::Acts::Tree

  embeds_many :statistics
  embedded_in :project, :inverse_of => :component_descriptors

end


class Statistic
  include Mongoid::Document
  field :statistics_type, :type => String
  field :data, :type => String
  field :playhead_time, :type => String
  field :remote_ip, :type => String
  field :user_agent, :type => String

  embedded_in :component_descriptor, :inverse_of => :statistics
end

Вопрос в том, как лучше всего подсчитать общее количество объектов статистики в проекте.

Один из способов, который я могу придумать, - это циклически проходить по каждому ComponentDescriptor, подсчитывать количество объектов Statistics и затем суммировать их. Но я думаю, что это не эффективный способ.

Спасибо заранее.

1 Ответ

0 голосов
/ 04 апреля 2011

Если вы можете сохранить поле подсчета на уровне проекта, это будет наиболее оптимальный и быстрый способ его получения.

...