Was ist die empfohlene äquivalent kaskadierendes löschen in MongoDB für N:M Beziehungen?

Vorausgesetzt, die folgenden "schema/Beziehung" design, was ist die empfohlene Praxis für den Umgang löschen mit cascade löschen wie operation?

Relationale Schema:

 +---------+ +--------+ 
| Student|-*--------1-[Einschreibung]-1--------*-| Kurs | 
+---------+ +--------+ 

MongoDB:

 +---------+ +--------+ 
| Student|-*----------------*-| Kurs | 
+---------+ +--------+ 

Gegeben, das klassische design der Immatrikulation der Studenten auf die Kurse, mit einer Sammlung von Kursen, die Studenten und Umgekehrt scheint zu sein, eine entsprechende Daten-Modell bei der Verwendung von MongoDB (das ist nichts für die Beziehung/Einschreibung Tabelle). Aber aus einer relationalen Welt, wie sollte ich damit umgehen, wie die Semantik der Sie einen Kurs löschen? Das ist, wenn ein Kurs gelöscht wird, werden alle der "Einschreibung" Datensätze gelöscht werden sollen, zu. Das heißt, ich sollte den Kurs zu löschen aus der Auflistung der einzelnen Schüler aufnehmen. Es sieht aus wie feuere ich 2 Abfragen: eine für die Löschung der Kurs und dann löschen Sie es von jedem student ' s Sammlung. Gibt es eine Möglichkeit eine einzelne Abfrage zum ausführen dieses "cascade delete", wie semantic-ohne zusätzliche Abfrage? Tut das Datenmodell ändern zu müssen?

HINWEIS: Für alle anderen Anwendungsfälle der oben genannten Daten Modell funktioniert Prima:

  • Löschen student => einfach löschen, der student und der damit verbundenen Sammlung von Kursen gelöscht, zusammen mit ihm.
  • Schüler bereit, fallen einem natürlich => löschen Sie ihn aus der Studenten-Kollektion von Kursen
  • Hinzufügen, Schüler/Kurs => fügen Sie es einfach auf die entsprechenden 'Tabelle' im wesentlichen.

Die einzige heikle Sache ist der Umgang mit der Löschung eines Kurses. Wie sollte ich mit diesem Szenario in MongoDB, da ich stammen aus einer relationalen hintergrund und bin nicht in der Lage zu diese Figur ein.

  • Es gibt keine Löschweitergabe. Es muss ausgeführt werden, wie zwei Schritte.
  • Aufgrund der Natur von MongoDB ich mir kaum vorstellen, du bist Entwurf der Datenbank richtig angezeigt, wenn Sie zu tun haben, so etwas wie "cascade delete" in diesem Fall. Es gibt zwei Ansätze, um das gleiche schema, ist die Einbettung von Kursen in der Schüler oder die Verwendung von arrays mit Zeigern auf die Kurse. In irgendeiner Weise gibt es nicht Löschweitergabe zur Verfügung, Mongo Operationen werden isoliert Dokument-updates-löscht-Einsätze, auch wenn Sie aktualisieren mehrerer Dokumente mit der richtigen Klausel, es ist immer noch verarbeitet ein Dokument zu einem Zeitpunkt.
InformationsquelleAutor PhD | 2013-12-04
Schreibe einen Kommentar