2017-05-11 1 views
0

Ich konvertiere derzeit ein vorhandenes benutzerdefiniertes Content-Management-System von der Verwendung von MySQL zu MongoDB. Das CMS hat Seiten, die einen Titel- und Körperinhalt haben und in einer Tabelle mit der Bezeichnung pages gespeichert sind.Verknüpfen von Menüelementen mit Seiten in MongoDB

Das CMS verfügt auch über mehrere Menüs, die von den Website-Administratoren bearbeitet werden können und in einer Tabelle mit der Bezeichnung menus gespeichert sind. Jeder hat eine eindeutige ID und Links, die in einer Tabelle namens menu_links gespeichert sind.

In menu_links gibt es eine Spalte, die angibt, ob die Menüverknüpfung zu einer Seite oder URL ist und eine Spalte mit der ID der verknüpften Seite oder NULL wenn es sich um eine URL handelt. Dadurch wird verhindert, dass die Menü-URLs bei einer Änderung der URL der Seite unterbrochen werden.

Alles, was ich für MongoDB finden kann, ist das Einbetten von Dokumenten innerhalb eines anderen, was zu doppelten Daten für Menüs und einem sehr schwierigen System führen würde. Wäre es angemessen, die ID einer Seite mit dem Menüpunkt zu verknüpfen?

+0

MongoDB gemeint ist nicht relationale Datenbank, so dass Sie Daten unnormalise müssen. NoSQL es ist keine gute Wahl, wenn Sie viele Beziehungen haben Von dem, was ich verstanden habe, können Sie 'Menüs' und' menu_links' Tabellen –

+0

@AdamW kombinieren. Ich verstehe das und werde es tun, aber ich muss wissen, wie man angibt, auf welchen Link eine Seite bezogen ist. –

Antwort

0

Ich weiß nicht, ob das war, was man

Seite

{ 
    _id: 111, 
    // other fields 
    url: "url/to/page/111" 
} 

Menü

{ 
    _id: 1, 
    elements: [ 
     {page_id: 111, url: "url/to/page/111"}, 
     {page_id: 222, url: "url/to/page/222"} 
    ] 
} 
+0

Das funktioniert - was ist der beste Weg, um die Seite, die es betrifft, von dort zu holen? Kann ich 'Lookup' verwenden? –

Verwandte Themen