Eingebettete Dokument vs-Referenz im Mungo-design-Modell?
Sagen wir mal ich Baue eine Diskussion forum Node.js und Mungo. Ein Benutzer kann mehrere Foren und ein forum kann mehrere Kommentare. Ein Benutzer kann auch andere Benutzer einladen, um sich einem forum auch. So, meine Frage ist über das Modell-design entweder mit Referenz oder eingebettetes Dokument !
Wenn ich gehe mit eingebetteten Dokument, Es würde wie folgt Aussehen:
var Comment = new Schema({ ... });
var Forum = new Schema({
title: {type: String},
content: {type: String},
comments: [Comment],
attendees: [User]
});
var User = new Schema({
name: {type: String},
email: {type: String},
forums: [Forum]
});
var Account = mongoose.model('Account', User);
Mithilfe der oben genannten design, kämpfte ich mit: wenn ein Benutzer einen Kommentar zu einem forum, und das forum ist in meinen Foren, ich glaube nicht, dass ich in der Lage sein get update ein neuer Kommentar in meinem forum-Liste. Ich ? Wissen Sie, wie man das eingebettete Dokument zu arbeiten, in diesem Fall?
So, ich war denken mit Referenz in Mungo. In diesem Fall werde ich haben zwei Kollektionen: Konto, und Forum. Hinzufügen eines neuen Kommentars zu einem forum ist nicht ein problem in diesem Fall. Bin ich im Recht?
Würde Referenz besser sein, als eingebettete Dokument für diese app?
Vielen Dank im Voraus,
- Hat man die Antworten Ihnen helfen?
- dieser post war hilfreich für mich zu verstehen, einbetten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hängt hauptsächlich davon ab, wie Sie sind gonna Abfrage und Aktualisierung Ihrer Daten. Die Konsistenz und Größe der Dokumente ist auch in diesem Fall nicht wichtig. Hier ist eine gute Zusammenfassung über die bei der Referenzierung oder die Einbettung von Dokumenten:
Einbettung:
Verweisen:
Dies ist ein exctract aus einem Buch über mongo ich gelesen. Dies sind nur Allgemeine Regeln, aber aus meiner Erfahrung, mit Ihnen macht es sehr klar, ob zu Referenz-oder einbetten, die meisten der Zeit.
Ich würde eher Referenz Forum in diesem Fall. Aber bitte beachten, alle Ihre Anforderungen. Zum Beispiel, wenn Sie auf Forum, von User, und Sie müssen auf Abfrage alle User eines bestimmten Forums die Abfrage möglicherweise langsam in diesem Fall. Wenn ich du wäre würde ich verfassen Sie eine Liste der alles, was ich brauche und dann mit den Allgemeinen Regeln würde, eine balance finden zwischen der vor-und Nachteile des embeding und verweisen.
Hoffe, es hilft!
Persönlich mache ich gerne Referenzen in Situationen wie deins. Auf diese Weise bekomme ich einen Kommentar von einem user, ein user aus einem forum, einem forum von einem Kommentar, einem forum von einem user, etc. ohne uns sorgen zu machen, komplizierten Dokument eingebettete Abfragen. Ich weiß nicht einmal die Mühe, die Speicherung von embedded-Referenz-Dokumente. Wenn es ein eins-zu-viele-Beziehung zwischen einem forum und Kommentare würde ich dann speichern, ein forum, Verweis auf den Kommentar und kein Kommentar Verweis auf das forum, weil beim hinzufügen/entfernen von Kommentaren aus den Kommentaren Kollektion, die Sie dann auch gehen müssen, entfernen Sie die eingebettete Referenz-Dokument aus dem sammeln von Kommentaren auf dem forum.
Ich kann eine Abfrage für ein forum von einem Kommentar über das forum verweisen und ich kann alle Kommentare für ein forum, durch Abfragen der Kommentare-Kollektion für das forum zu verweisen (das ist nur eine ID-Nummer, bis Mungo füllt es hinter den kulissen für Sie).