sql >> Base de Datos >  >> NoSQL >> MongoDB

Modelado de blogs y calificaciones en mongodb y nodejs

Una buena práctica con MongoDB (y otros almacenes de datos no relacionales) es modelar sus datos para que sea fácil de usar/consultar en su aplicación. En su caso, podría considerar desnormalizar un poco la estructura y almacenar la calificación directamente en la colección del blog, por lo que un blog podría verse así:

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

La idea es que los objetos en las rates array contiene todos los datos que necesitará para mostrar la entrada del blog, completa con calificaciones, directamente en el documento único. Si también necesita consultar las tarifas de otra manera (por ejemplo, encontrar todas las calificaciones realizadas por el usuario X) y el sitio tiene muchas lecturas, puede considerar también almacenar los datos en un Rates colección como lo está haciendo ahora. Claro, los datos están en dos lugares y es más difícil actualizarlos, pero puede ser una victoria general después de analizar su aplicación y cómo accede a sus datos.

Tenga en cuenta que puede aplicar índices en profundidad en la estructura de un documento, por ejemplo, puede indexar News.rates.client_id , y luego puede encontrar rápidamente cualquier documento en las News colección que un usuario en particular ha calificado.