我有像这样的数据结构
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")
我可以这样查询吗?
我的红宝石代码是
class Course
embeds_many :subjects
class Subject
embedded_in :course
embeds_many :topics
class Topic
embedded_in :subject
答案 0 :(得分: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')