我正在 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**
}
那么每次用户关注某人时,都需要对所有嵌入文档进行多次更新。
由于这些数据的一致性并不是很重要(即向某人展示我有 10 个而不是 11 个关注者并不是世界末日),我可以将此更新排队。这种方法可以吗,或者有人可以提出更好的方法吗?