繁体   English   中英

跟踪集合中文档的计数器变量的最佳方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM