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

Modellazione di blog e valutazioni in mongodb e nodejs

Una buona pratica con MongoDB (e altri archivi dati non relazionali) consiste nel modellare i dati in modo che siano facili da usare/interrogare nell'applicazione. Nel tuo caso, potresti considerare di denormalizzare un po' la struttura e memorizzare la valutazione direttamente nella raccolta del blog, quindi un blog potrebbe assomigliare a questo:

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

L'idea è che gli oggetti nelle rates array contiene tutti i dati necessari per visualizzare il post del blog, completo di valutazioni, direttamente nel singolo documento. Se anche tu hai bisogno di interrogare le tariffe in un altro modo (es. trovare tutte le valutazioni fatte dall'utente X) e il sito ha molte letture, puoi considerare anche memorizzare i dati in un Rates raccolta come stai facendo ora. Certo, i dati sono in due posizioni ed è più difficile aggiornarli, ma potrebbe essere una vittoria generale dopo aver analizzato la tua app e il modo in cui accede ai tuoi dati.

Tieni presente che puoi applicare indici in profondità nella struttura di un documento, quindi ad esempio puoi indicizzare News.rates.client_id , quindi puoi trovare rapidamente tutti i documenti nelle News raccolta che un particolare utente ha valutato.