私は MongoDB でソーシャル ネットワークを実装しており、ユーザーごとにフォロワーとフォローを追跡する必要があります。ユーザーを検索するときに、ユーザー名、写真、フォロワーとフォローの数を含む Facebook のようなリストを表示したいと考えています。ユーザー名と画像 (変更されない情報) を表示したいだけなら簡単ですが、フォロワーとフォローの数 (かなり定期的に変更されます) も表示する必要があります。
私の現在の戦略は、ユーザーがフォローしているユーザーを各ユーザー ドキュメントに埋め込むことです。
firstName: "Joe",
lastName: "Bloggs",
follows: [
{
_id: ObjectId("520534b81c9aac710d000002"),
profilePictureUrl: "https://pipt.s3.amazonaws.com/users/xxx.jpg",
name: "Mark Rogers",
},
{
_id: ObjectId("51f26293a5c5ea4331cb786a"),
name: "The Palace Bar",
profilePictureUrl: "https://s3-eu-west-1.amazonaws.com/businesses/xxx.jpg",
}
]
問題は、フォロワー数と各ユーザーのフォロー数を追跡するための最良の戦略は何ですか?
埋め込みドキュメントの一部としてフォロー/フォローの数を含めると、つまり
follows: [
{
_id: ObjectId("520534b81c9aac710d000002"),
profilePictureUrl: "https://pipt.s3.amazonaws.com/users/xxx.jpg",
name: "Mark Rogers",
**followers: 10,**
**following: 400**
}
次に、ユーザーが誰かをフォローするたびに、すべての埋め込みドキュメントにわたって複数の更新が必要になります。
このデータの一貫性はそれほど重要ではないので (つまり、11 人のフォロワーではなく 10 人のフォロワーを誰かに見せても、世界の終わりではありません)、この更新をキューに入れることができます。このアプローチは大丈夫ですか、それともより良いアプローチを提案できますか?