我是MongoDB的新手,我正在创建一个数据库来记录学生和学生在大学里所做的课程。 有三个名为Student,Subject和Lecturer的集合。 学生集合包含studentId,name,dob,email,year。 Subject集合包含subjectId,subjectName,credits Lecturer集合包含讲师,讲座名称,speciliazation,contactNo,电子邮件。 学生和学生集合之间的关系很多。 在Subject和Lecturer集合之间存在一对一的关系。 我需要将subjectId添加到学生集合中,并将讲师添加到主题集合中。 任何人都可以告诉我如何在集合之间创建外键关系?
答案 0 :(得分:4)
您可以使用MongoDB DBRef,其中文档包含来自不同集合的引用。
DBRefs中有三个字段 -
$ref
- 此字段指定所引用文档的集合
$id
- 此字段指定引用文档的_id字段
$db
- 这是一个可选字段,包含引用文档所在的数据库名称
学生的文档示例 -
{
"_id":ObjectId("53402597d852426020000002"),
"subjects": [{
"$ref": "SubjectCollection",
"$id": ObjectId("534009e4d853427820000001"),
"$db": "dbname"
},{
"$ref": "SubjectCollection",
"$id": ObjectId("829009e4d856727320000007"),
"$db": "dbname"
}],
"name": "Mukesh Saini",
"dob": "01-01-1990",
"email": "ms@gmail.com",
"year": 2017
}
然后您可以按如下方式查询引用的文档 -
var student = db.studentsColl.findOne({"name":"Mukesh Saini"})
var dbRef = student.subjects[0]
db[dbRef.$ref].findOne({"_id":(dbRef.$id)})