在Cloud Firestore文档中存储标签及其实例数

时间:2019-06-18 05:12:25

标签: firebase google-cloud-firestore

我正在构建一个使用标签的应用,就像SO一样。当用户要向帖子中添加标签或按标签搜索时,我具有自动完成功能,并且自动完成框会显示每个标签及其使用次数(因此用户知道哪些相关标签很受欢迎)。

我是Cloud Firestore的新手,很难为如何有效存储此数据找到合适的解决方案,以便用户获得此信息,而不会达到firestore每个文档20,000个字段的限制。

我将解释我考虑过的两个选项,以及为什么它们不好/不起作用:

  1. 选项1:我已经为每个标签以及使用该标签的所有实例存储了文档。这本身就是个问题,因为我最多只能存储20,000个实例,从长远来看,这不是一个好选择。但是即使有,对于我来说,要生成供用户在应用程序中使用的潜在标签列表,我也必须阅读每个标签的文档,并获取其实例数组的大小。使用该应用程序后,每次用户打开我的应用程序时,可能会产生数千次读取,只是初始化此列表。根本不是个好主意。

  2. 选项2:有一个文档,其中存储了所有标记的图及其实例编号。每当使用标签时,我都会在地图中增加该值。这也不是一个好主意,因为我再次受到20k字段的限制,这意味着我只能存储有关20k标签的信息,这从长远来看是不可持续的。

    您有什么好的办法吗?我现在唯一能想到的就是使用实时数据库存储标签,但感觉不正确。

编辑:我只是意识到我实际上不需要存储使用标签的所有实例,因为在Cloud Firestore中,我可以使用标签在此处进行查询和过滤,因此选项一是可行的。但这意味着,如果我想为用户生成此列表,则必须向数据库查询添加的每个标签建议,以便获得使用该标签的实例数。 这是一个好主意吗?还是会占用太多资源?每当用户想要搜索某些内容时,它都必须进行查询。 查询结果的大小是否被视为对结果中每个文档的读取?我实际上不会阅读任何文档。

0 个答案:

没有答案