4

私はかなり単純な mongodb モデルを持っています 現在 2 つのコレクション 学生コース (サブジェクトを埋め込む)

class Student < User
  include Mongoid::Document
  has_many :courses

class Course
  include Mongoid::Document
  belongs_to :student
  embeds_many :subjects

私は、mongoid が has_many の直接のクエリをサポートしていないことを知っています。

Student.courses

ですから、学生の科目を取得したい場合は、これが唯一の方法です

@student = Student.first
Course.find(@student.courses).subjects

これは現在3つのクエリを実行します

  MOPED: 127.0.0.1:27017 QUERY        database=test collection=users selector=    {"$query"=>{"_type"=>{"$in"=>["Student"]}}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (1.1775ms)
  MOPED: 127.0.0.1:27017 QUERY        database=test collection=courses selector={"student_id"=>"51f09457b5b605db25000002"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.8862ms)
  MOPED: 127.0.0.1:27017 QUERY        database=test collection=courses selector={"_id"=>"51f09457b5b605db25000003"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.8380ms)

より効率的な方法はありますか?Course を Student に埋め込むことができることは知っていますが、 Courses Collection に直接クエリを実行することも考えています。

4

1 に答える 1