MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Modelando blogs e avaliações em mongodb e nodejs


Uma boa prática com o MongoDB (e outros armazenamentos de dados não relacionais) é modelar seus dados para que seja fácil de usar/consultar em seu aplicativo. No seu caso, você pode considerar desnormalizar um pouco a estrutura e armazenar a classificação diretamente na coleção de blogs, para que um blog fique assim:
{
  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 }
  ]
}

A ideia é que os objetos nas rates array contém todos os dados necessários para exibir a entrada do blog, completa com classificações, diretamente no documento único. Se você também precisar consultar as taxas de outra maneira (por exemplo, encontrar todas as avaliações feitas pelo usuário X) e o site for de leitura pesada, considere também armazenando os dados em um Rates coleção como você está fazendo agora. Claro, os dados estão em dois lugares e é mais difícil de atualizar, mas pode ser uma vitória geral depois de analisar seu aplicativo e como ele acessa seus dados.

Observe que você pode aplicar índices profundamente na estrutura de um documento, então, por exemplo, você pode indexar News.rates.client_id e, em seguida, você pode encontrar rapidamente qualquer documento no News coleção que um determinado usuário avaliou.