2013-07-28 126 views
0

我一直在使用這樣的Mongoid和MongoDB查詢

Courses 
{ 
    "name" : "Course1", 
    "student_id" 
    "subjects" : 
    [{ 
     "level" : "1", 
     "short_name" : "Maths", 
     "topics" : [{ 
       "name" : "Algebra 101", 
       "week" : "1", 
       "submission_week" : ISODate("2013-07-28T00:00:00Z"), 
       "correction_week" : ISODate("2013-07-28T00:00:00Z") 
       }, 
       { 
       "name" : "Algebra 201", 
       "week" : "1", 
       "submission_week" : ISODate("2013-07-28T00:00:00Z"), 
       "correction_week" : ISODate("2013-07-28T00:00:00Z") 
       } 
    ]}, 
    { 
     "level" : "2", 
     "short_name" : "Chem" 
    } 
    ] 
} 

數據晶格結構Mongoid我試圖找回所有主題。

我試過各種查詢,但似乎無法得到它。

例如,我不明白爲什麼這不起作用?

Topic.where(name: "Algebra 101", 'subject.short_name' =>"Maths", 'subject.course.name' =>"Course1") 

我可以這樣查詢嗎?

我的Ruby代碼是

class Course 
    embeds_many :subjects 

class Subject 
    embedded_in :course 
    embeds_many :topics 

class Topic 
    embedded_in :subject 

回答

0

一個據我所知,這只是可能使在最上面的模型這樣的查詢(在這種情況下Course);我還沒有看到直接獲得像這樣的嵌入式模型的方法。

所以這應該工作,但只給你的Course

Course.where(name: 'Course1', 'subjects.short_name' => 'Maths', 'subjects.topics.name' => "Algebra 101") 

這是(不幸的是相當醜陋的)查詢,應該給你想要的東西:

Course.where(name: 'Course1').subjects.where(short_name: 'Maths').topics.where(name: 'Algebra 101') 
+0

歡呼那是什麼我擔心 – dboyd68