sql >> Database teknologi >  >> NoSQL >> MongoDB

Modellering af blogs og vurderinger i mongodb og nodejs

En god praksis med MongoDB (og andre ikke-relationelle datalagre) er at modellere dine data, så det er nemt at bruge/forespørge i din applikation. I dit tilfælde kan du overveje at denormalisere strukturen lidt og gemme vurderingen direkte i blogsamlingen, så en blog kan se sådan ud:

{
  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 }
  ]
}

Ideen er, at objekterne i rates array indeholder alle de data, du skal bruge for at vise blogindlægget, komplet med vurderinger, direkte i det enkelte dokument. Hvis du også har brug for at forespørge priserne på en anden måde (f.eks. finde alle vurderinger lavet af bruger X), og siden er læsetung, kan du overveje også lagring af data i en Rates indsamling, som du gør nu. Selvfølgelig er dataene to steder, og det er sværere at opdatere, men det kan være en samlet gevinst, efter du har analyseret din app, og hvordan den får adgang til dine data.

Bemærk, at du kan anvende indekser dybt ind i et dokuments struktur, så du for eksempel kan indeksere News.rates.client_id , og så kan du hurtigt finde alle dokumenter i News samling, som en bestemt bruger har bedømt.




  1. Hvordan sletter man dokumenter efter forespørgsel effektivt i mongo?

  2. MongoDB count() versus countDocuments()

  3. Sådan konverteres BSON til JSON med menneskelæsbart datoformat

  4. Begrænsninger af Hadoop, måder at løse Hadoop-ulemper på