MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Modélisation des blogs et des évaluations dans mongodb et nodejs

Une bonne pratique avec MongoDB (et d'autres magasins de données non relationnels) consiste à modéliser vos données afin qu'elles soient faciles à utiliser/interroger dans votre application. Dans votre cas, vous pourriez envisager de dénormaliser un peu la structure et de stocker la note directement dans la collection de blogs, de sorte qu'un blog pourrait ressembler à ceci :

{
  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'idée étant que les objets dans les rates array contient toutes les données dont vous aurez besoin pour afficher l'entrée de blog, avec les évaluations, directement dans le document unique. Si vous avez également besoin d'interroger les tarifs d'une autre manière (par exemple, trouver toutes les évaluations faites par l'utilisateur X) et que le site est lourd en lecture, vous pouvez envisager également stocker les données dans un Rates collecte comme vous le faites actuellement. Bien sûr, les données se trouvent à deux endroits et il est plus difficile de les mettre à jour, mais cela peut être une victoire globale après avoir analysé votre application et comment elle accède à vos données.

Notez que vous pouvez appliquer des index en profondeur dans la structure d'un document, par exemple vous pouvez indexer News.rates.client_id , et vous pourrez ensuite trouver rapidement n'importe quel document dans les News collection qu'un utilisateur particulier a évaluée.