我想创建以下两个页面,每个页面使用一个查询:
- 特定学生的所有课程列表
- 特定课程的所有学生列表
我想用 MongoDB(或其他 NoSQL 解决方案)重新创建以下内容
class Student < ActiveRecord::Base
has_many :assignments
has_many :courses, :through=>:assignments
end
class Course < ActiveRecord::Base
has_many :assignments
has_many :students, :through=>:assignments
end
class Assignment < ActiveRecord::Base
belongs_to :course
belongs_to :student
使用关系数据库,我可以通过预先加载关联来完成此操作。
但是在 Mongo 中,当我按模式创建时,我可以选择在课程中嵌入或链接学生数据,或者在学生中嵌入或链接课程数据。
如果我选择将学生数据嵌入到课程文档中,我可以轻松地为特定课程(一个文档)拉取所有学生。但是,如果我想查找特定学生正在学习的所有课程,我将不得不查询 MongoDB N 次(其中 N 是学生正在学习的课程数量)!
在由关系数据库支持的 Web 应用程序中,对数据库进行 N 次调用以加载页面不是一种选择。它需要在恒定数量的查询中完成。MongoDB不是这种情况吗?有没有办法构建我的文档,以便我可以使用一个查询加载上面的两个页面?