2017-05-18 4 views
0

Ich bin neu in MongoDB und ich erstelle eine Datenbank, um Aufzeichnungen über Studenten und die Kurse zu halten, die die Studenten an einer Universität machen. Es gibt drei Sammlungen namens Student, Fach und Dozent. Die Student-Sammlung enthält studentId, Name, Geburtsdatum, E-Mail, Jahr. Die Subjektsammlung enthält die subjectId, subjectName, credits Die Dozentkollektion enthält die lecturerId, lectureName, speciliazation, contactNo, email. Die Beziehung zwischen Student und Student Sammlung ist viele zu viele. Zwischen dem Betreff und der Dozenten-Sammlung gibt es eine Eins-zu-eins-Beziehung. Ich muss die SubjectId der Student-Sammlung und LecturerId der Betreff-Sammlung hinzufügen. Kann mir bitte jemand sagen, wie kann ich Fremdschlüssel Beziehungen zwischen Sammlungen erstellen?Erstellen von Beziehungen zwischen Sammlungen in MongoDB

Antwort

0

Sie können MongoDB DBRefs verwenden, wenn ein Dokument Referenzen aus verschiedenen Sammlungen enthält.

Es gibt drei Felder in DBRefs -

  • $ ref - Dieses Feld

  • $ id die Sammlung des in Bezug genommenen Dokument legt - Dieses Feld gibt das _id Feld der referenzierten Dokument legt

  • $ db - Dies ist ein optionales Feld und enthält den Namen der Datenbank, in der das referenzierte Dokument liegt

Dokument Beispiel des Studenten -

{ 
    "_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": "[email protected]", 
    "year": 2017 
} 

Dann können Sie das referenzierte Dokument wie folgen abfragen -

>var student = db.studentsColl.findOne({"name":"Mukesh Saini"}) 
>var dbRef = student.subjects[0] 
>db[dbRef.$ref].findOne({"_id":(dbRef.$id)}) 
Verwandte Themen