Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MongoDB中创建集合之间的关系_Mongodb_Database - Fatal编程技术网

在MongoDB中创建集合之间的关系

在MongoDB中创建集合之间的关系,mongodb,database,Mongodb,Database,我是MongoDB的新手,我正在创建一个数据库来记录学生和学生在大学里学习的课程。 有三个集合称为学生、主题和讲师。 学生集合包含学生ID、姓名、出生日期、电子邮件、年份。 Subject集合包含subjectId、subjectName和credits 讲师集合包含讲师ID、讲师姓名、规格、联系人编号、电子邮件。 学生与学生收藏之间的关系是多对多的。 在主题和讲师集合之间存在一对一的关系。 我需要将主题添加到学生集合中,将讲师ID添加到主题集合中。。 有谁能告诉我如何在集合之间创建外键关系吗?

我是MongoDB的新手,我正在创建一个数据库来记录学生和学生在大学里学习的课程。 有三个集合称为学生、主题和讲师。 学生集合包含学生ID、姓名、出生日期、电子邮件、年份。 Subject集合包含subjectId、subjectName和credits 讲师集合包含讲师ID、讲师姓名、规格、联系人编号、电子邮件。 学生与学生收藏之间的关系是多对多的。 在主题和讲师集合之间存在一对一的关系。 我需要将主题添加到学生集合中,将讲师ID添加到主题集合中。。
有谁能告诉我如何在集合之间创建外键关系吗?

如果文档包含来自不同集合的引用,可以使用MongoDB DBRefs

DBREF中有三个字段−

  • $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)})

在文档包含来自不同集合的引用的情况下,可以使用MongoDB数据库引用

DBREF中有三个字段−

  • $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)})