首页 > 解决方案 > Firestore:有没有一种无需阅读即可遍历 document_ID 的方法?

问题描述

标题给出了 TLDR;问题的版本。但我认为下面的细节可以更好地监督这种情况。



我想知道的问题是在考虑上述模式的情况下编写 CRUD 操作的最佳方式是什么。具体来说,我挂断了删除文档CollectionA并让它扫描并删除用户中存在的所有匹配克隆文档的最佳方法CollectionB。注意:并非所有用户都克隆了“待删除”文档,因此它不一定作为文档存在于所有用户CollectionB集合中。

我之前的想法是在 上创建一个子集合CollectionA,具体来说:CollectionA/{DocumentID}/CurrentUsers/{UserID}. 每当新用户决定克隆文档时,他们都会被附加到CurrentUsers子集合中。然后,稍后如果我们决定从中删除文档,CollectionA我们可以首先遍历该 UserID 的子集合,然后使用每个 ID 找到匹配的用户,并删除匹配的CollectionB克隆文档(我认为它们可以共享相同的 ID)。

我对这种方法的担忧是,如果 3,000 名用户克隆了该文档,那么第一次 READCurrentUsers将是 3,000 次读取。我认为返回 3000 个文档是一个非常大的查询。显然,如果我们扩展到 30,000 可能最坏的情况下 3,000,000 个用户,情况只会变得更糟(我是否接近涉及 300 万用户的问题?一点也不。但是,我更愿意编写一个第一次就可以很好地扩展的解决方案! )

将用户的 s写入文档的子集合感觉是一种很好的做法。不过,这取决于我是否有一种方法可以简单地遍历每个文档的 ID,然后找到匹配的用户并删除他们的克隆副本。但是,我不知道。有一个更好的方法吗?UserIDACurrentUsers

想法?

- 希望这个例子有意义。

标签: firebasegoogle-cloud-firestore

解决方案


推荐阅读