2012-04-01 17 views
1

Ich versuche, eine einfache Anwendung zu entwerfen, wo ich in zwei Entitäten Notebook und Note habe. So kann Notebook mehrere Notes enthalten. In RDBMS könnte ich zwei Tabellen haben und One to Many Beziehung zwischen ihnen haben. Ich bin mir nicht sicher in MongoDB, ob ich nicht eine zwei Sammlung Ansatz nehmen sollte oder ich sollte Notizen in Notebook-Sammlung einbetten. Was würdest du vorschlagen?MongoDB Schemadesign - Wählen Sie zwei Sammlung Ansatz oder eingebettetes Dokument

Antwort

3

Das scheint eine vollkommen vernünftige Situation zu sein, um eine einzelne Sammlung namens Notebook zu verwenden, und jedes Notebook-Dokument enthält eingebettete Notizen. Sie können problemlos eingebettete Dokumente indizieren.

Wenn ein Notebook Dokument hat einen ‚Notizen‘ Schlüssel und Wert ist eine Liste der Notizen:

{ 
    "notes": [ 
     {"created_on": Date(1343592000000), text: "A note."} 
    ] 
} 

# create index 
db.notebook.ensureIndex({"notes.created_on" : -1}) 

Meine Meinung zu versuchen und einbetten, so viel wie möglich, und dann wählen Sie eine andere Sammlung verweisen über eine ID als zweite Option, wenn der Verweis auf einen allgemeineren Datensatz erfolgen muss, der freigegeben ist und sich möglicherweise ändert. Zum Beispiel eine Sammlung von Kategorie-Dokumenten, auf die viele andere Sammlungen verweisen. Und die Kategorie kann im Laufe der Zeit aktualisiert werden. Aber in Ihrem Fall sollte eine Notiz immer zu einem Notizbuch gehören.

0

Sie sollten sich fragen, welche Art von Abfragen Sie ausführen müssen. Der "Standard" -Ansatz besteht darin, sie einzubetten, aber es gibt Fälle (die davon abhängen, wie Sie sie verwenden), wenn ein relationalerer Ansatz anwendbar ist. Also die einfache Antwort ist "wahrscheinlich, aber Sie sollten wahrscheinlich darüber nachdenken" :)

Verwandte Themen