sql >> Databasteknik >  >> NoSQL >> MongoDB

Modellera bloggar och betyg i mongodb och nodejs

En bra praxis med MongoDB (och andra icke-relationella datalager) är att modellera din data så att den är enkel att använda/fråga i din applikation. I ditt fall kan du överväga att avnormalisera strukturen lite och lagra betyget direkt i bloggsamlingen, så en blogg kan se ut ungefär så här:

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

Tanken är att objekten i rates array innehåller all data du behöver för att visa blogginlägget, komplett med betyg, direkt i det enda dokumentet. Om du också behöver fråga priserna på annat sätt (t.ex. hitta alla betyg gjorda av användare X), och webbplatsen är lästung, kan du överväga också lagra data i en Rates insamling som du gör nu. Visst, data finns på två ställen och det är svårare att uppdatera, men det kan vara en övergripande vinst efter att du analyserat din app och hur den kommer åt din data.

Observera att du kan använda index djupt in i ett dokuments struktur, så att du till exempel kan indexera News.rates.client_id , och sedan kan du snabbt hitta alla dokument i News samling som en viss användare har betygsatt.




  1. I MongoDB, hur man utför en fråga baserat på om ett strängfält innehåller ett annat

  2. mongo - kunde inte ansluta till server 127.0.0.1:27017

  3. Förstå hållbarhet och skrivsäkerhet i MongoDB

  4. MongoDb :Hur infogar man ytterligare objekt i objektsamlingen i golang?