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.