MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was ist die beste Datenstruktur, um diese Daten in MongoDB zu speichern?

Deine Struktur sieht korrekt aus. Sie speichern nur news_id im Datenfeld, und das ist eine intelligentere Implementierung, da das Speichern des vollständigen Dokuments jedes Mal, wenn eine neue Nachricht vom Benutzer zu den Favoriten hinzugefügt wird, viel Verschieben und Schreiben durch MongoDB verursacht.

Der Grund, den Sie wahrscheinlich bereits kennen, ist, dass bei jedem Update ein neues Dokument erstellt wird. Referenz:http://docs.mongodb.org/ manual/reference/method/db.collection.save/#upsert .

Ich denke auch, dass Sie als Geschäftsregel die Anzahl der Nachrichten beschränken sollten, die vom Benutzer als Favorit festgelegt werden können. Diese Liste unbegrenzt wachsen zu lassen, ist keine gute Idee für das eingebettete Design.

Falls Sie eine unbegrenzte Anzahl von Favoriten möchten, erstellen Sie dafür besser eine separate Sammlung und verwenden Sie dann die Operatoren $match (auf Benutzer-ID) und $sort (von Nachrichten) in einer Aggregationsabfrage, um alle Favoriten eines Benutzers zu erhalten Holen Sie sich die sortierte Liste der bevorzugten Nachrichten für den Benutzer.