[英]Best way to keep track of counter variables for documents in a collection
我的项目有一个功能,允许关注/关注者类似于很多 social.networks。 因为我可能会经常得到这些数字的计数,所以我认为最好为关注者/关注计数创建一个单独的度量,这样我就不必 to.get() 所有这些来得到一个计数。 我目前正在选择 3 个选项来跟踪这个计数器变量。
选项 1 (将柜台和收款分开)
[User Collection] [Followers Collection]
(uid) (uid)
-username -uid_1
-follower_count -uid_2
选项2 (将计数器和数据放在单独的集合中,为数据做一个子集合)
[User Collection] [Followers Collection]
(uid) (uid)
-username -count
-[Followers]
-uid_1
-uid_2
选项 3 (将所有内容保存在一个集合中并使用 arrays 获取所有数据+一次读取计数——担心这会导致文档超过 1Mib 限制)
[User Collection]
(uid)
-username
-following
-[uid_1, uid_2]
使用其中一种方法是否存在明显的问题? 或者在一天结束时都会导致相同的成本/查询时间?
任何时候你有一个可以无限增长的数组,它可能应该表示为子集合中的文档。 这就是 Firestore 的工作原理。 如果你愿意,你可以有一个数组,但正如你所说,你有超过限制的风险,而且你有一个非常大的问题,解决起来比读取和写入的成本更加困难和昂贵。
您是否使用集合或子集合完全取决于您以及它如何最适合您的查询。 由于我们不知道您的查询或您预期的安全规则,所以真的不可能说哪个更好。 选择满足您需求的那个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.