【问题标题】:delete all documents with doc Id in subcollection across the root collection删除根集合中子集合中具有 doc Id 的所有文档
【发布时间】:2018-08-13 21:49:51
【问题描述】:

我有以下结构

(Employees) -> emailId -> (lists) -> listId .... 然后是所有字段

基本上,如果我需要获取员工拥有的所有列表,那么我可以简单地通过电子邮件 ID 访问列表下的所有文档。

员工可以属于同一个列表

现在的问题是是否需要删除列表。是否有一个“查询”,我可以从所有员工中删除所有具有预期 listId 的文档中的 listId。

如果不是,如何相应地改变这个结构?

备份选项是具有另一个根集合,其中包含 listId 及其所有员工。在这种情况下,我需要进行 40 次删除(我必须单独访问每个员工才能删除列表)。

我希望有一个更清洁的解决方案

谢谢

【问题讨论】:

    标签: android firebase google-cloud-firestore


    【解决方案1】:

    对于您想以某种方式读取或写入的每个单独的集合(或子集合,没关系),它需要一个查询。您不能以任何方式影响或聚合集合。

    【讨论】:

    • 我明白了。这种做事结构是否令人不悦?我可以想象这种情况很常见,需要在结构末尾删除/更新叶文档,并且它也存在于多个根中
    • 以满足您打算对其执行的查询的方式对数据进行建模。这是唯一真正的建议。您只需要了解底层存储系统的优点和局限性。
    • 谢谢。不幸的是,这是第 22 条问题,在这种情况下,满足一个查询将增加对立查询的复杂性。但就像你说的那样,我想这就是限制,必须解决它。
    • 您可以随时复制数据以满足多种查询。这在 NoSQL 中很常见。
    猜你喜欢
    • 2018-11-01
    • 2020-09-08
    • 2018-08-23
    • 2018-04-03
    相关资源
    最近更新 更多