【问题标题】:Creating Relationships between collections in MongoDB在 MongoDB 中创建集合之间的关系
【发布时间】:2017-10-18 15:05:35
【问题描述】:

我是 MongoDB 的新手,我正在创建一个数据库来保存学生和学生在大学学习的课程的记录。 共有三个集合,分别称为 Student、Subject 和 Lecturer。 Student 集合包含 studentId、name、dob、email、year。 Subject 集合包含 subjectId、subjectName、credits Lecturer 集合包含讲师Id、lectureName、speciliazation、contactNo、email。 Student 和 Student 集合之间的关系是多对多的。 在 Subject 和 Lecturer 集合之间存在一对一的关系。 我需要将 subjectId 添加到学生集合中,将讲师 ID 添加到主题集合中。 谁能告诉我如何在集合之间创建外键关系?

【问题讨论】:

    标签: mongodb database


    【解决方案1】:

    您可以在文档包含来自不同集合的引用的情况下使用 MongoDB DBRefs。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 2018-10-24
      相关资源
      最近更新 更多