Eine bewährte Vorgehensweise bei MongoDB (und anderen nicht relationalen Datenspeichern) besteht darin, Ihre Daten so zu modellieren, dass sie in Ihrer Anwendung einfach zu verwenden/abzufragen sind. In Ihrem Fall könnten Sie erwägen, die Struktur ein wenig zu denormalisieren und die Bewertung direkt in der Blog-Sammlung zu speichern, sodass ein Blog etwa so aussehen könnte:
{
title: "My New Post",
body: "Here's my new post. It is great. ...",
likes: 20,
dislikes: 5,
...
rates: [
{ client_id: (id of client), rate: 5 },
{ client_id: (id of another client), rate: 3 },
{ client_id: (id of a third client), rate: 10 }
]
}
Die Idee ist, dass die Objekte in den rates
array enthält alle Daten, die Sie benötigen, um den Blogeintrag samt Bewertungen direkt im einzelnen Dokument anzuzeigen. Wenn Sie die Preise auch auf andere Weise abfragen müssen (z. B. alle Bewertungen von Benutzer X finden) und die Website sehr leseintensiv ist, können Sie dies auch in Betracht ziehen Speichern der Daten in einem Rates
Sammlung, wie Sie es jetzt tun. Sicher, die Daten befinden sich an zwei Stellen und sind schwieriger zu aktualisieren, aber es kann ein Gesamtgewinn sein, nachdem Sie Ihre App und den Zugriff auf Ihre Daten analysiert haben.
Beachten Sie, dass Sie Indizes tief in die Struktur eines Dokuments einfügen können, sodass Sie beispielsweise News.rates.client_id
indizieren können , und dann finden Sie alle Dokumente schnell in den News
Sammlung, die ein bestimmter Benutzer bewertet hat.