MongoDB(およびその他の非リレーショナルデータストア)の良い習慣は、アプリケーションで簡単に使用/クエリできるようにデータをモデル化することです。あなたの場合、構造を少し非正規化し、評価をブログコレクションに正しく保存することを検討するかもしれません。そのため、ブログは次のようになります。
{
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 }
]
}
rates
評価するという考え方 配列には、ブログエントリを表示するために必要なすべてのデータが、評価とともに1つのドキュメントに含まれています。別の方法でレートを照会する必要があり(たとえば、ユーザーXによるすべての評価を検索する)、サイトの読み取りが多い場合は、も検討することができます。 Rates
にデータを保存する あなたが今しているようにコレクション。確かに、データは2つの場所にあり、更新するのは難しいですが、アプリとアプリがデータにアクセスする方法を分析した後は、全体的なメリットになる可能性があります。
ドキュメントの構造の奥深くにインデックスを適用できることに注意してください。たとえば、News.rates.client_id
にインデックスを付けることができます。 、そしてNews
でドキュメントをすばやく見つけることができます 特定のユーザーが評価したコレクション。