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
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.
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" :)
- 1. MongoDB-Schemadesign für Dokument, das eingebettet oder eigenständig sein kann
- 2. Mongodb upsert eingebettetes Dokument
- 3. MongoDB Datenbank Schemadesign
- 4. MongoDB Fügen Sie zusätzliches eingebettetes Dokument statt Überschreiben
- 5. Bedingtes eingebettetes Dokument für mongodb Objekte
- 6. MongoDB - eingebettetes Dokument holt neben einem Feld von seinem übergeordneten
- 7. Aktualisieren ein eingebettetes Dokument in MongoDB mit offiziellem C# Fahrern
- 8. Mongoose nicht aktualisiert eingebettetes Dokument
- 9. Eingebettetes Dokument ohne Array?
- 10. Mongoid rekursiv finden eingebettetes Dokument
- 11. Spring Data MongoDB - Eingebettetes Dokument als Referenz in einem anderen Dokument
- 12. Wie erhalte ich ein bestimmtes eingebettetes Dokument in eine MongoDB-Sammlung?
- 13. Meteor Sammlung Dokument-IDs: Random.id() oder Meteor.Collection.ObjectID()
- 14. vergleicht zwei Sammlung in mongodb
- 15. Beziehung zwischen zwei Sammlung mongodb
- 16. Creting Sammlung nur auf MongoDB
- 17. mongodb: Verwenden Sie verschachteltes Dokument oder separate Sammlungen mit Referenzen
- 18. Wie einzigartig eingebettetes Dokument in mongoid
- 19. Vergleichen Sie zwei Datumsfelder in MongoDB
- 20. Wie benutzt man in MongoDB $ set, um einen verschachtelten Wert/ein eingebettetes Dokument zu aktualisieren?
- 21. Eingebettetes und nicht eingebettetes Dokument in der gleichen Zeit
- 22. MongoDB - Query-Rätsel - Dokument refs oder Filialdokumente
- 23. Sollten wir dbref oder ein eingebettetes Dokument in einer rechenintensiven Anwendung verwenden
- 24. InsertMany Dokument in einer MongoDB Sammlung mit C# BsonArray
- 25. MongoDB Schema Design - Neue Sammlung oder Referenz?
- 26. MongoDB: Upsert Unter Dokument
- 27. Mongo konvertiert eingebettetes Dokument in Array
- 28. MongoDB: Wählen Sie abgestimmte Elemente der Untersammlung
- 29. MongoDB: Suchen das erste Dokument in einer Sammlung
- 30. Unterschied in diesen zwei Ansatz zur Sammlung Array-Objekt