我有一个很大的收藏,里面有几千份文件。这些文档具有子集合,其中包含文档。现在我删除了很多最高层的文件。
结构: MyCollection => MyDocument => MySubcollection => MySubdocument
现在我意识到,文件被删除了(没有在任何查询中显示),但是子集合及其文档仍然存在。现在我不知道如何删除它们,因为我不知道我删除的文件的id。
当我试图通过向我的集合发送一个查询来读取所有文档来找出id时,删除的文档(按设计)就不再包含了。那么我现在如何计算出它们的id来删除它们的子集合呢?
谢谢你的建议!
1条答案
按热度按时间5fjcxozz1#
这完全取决于你的确切目标。
如果要删除
MyCollection
集合,包括所有子集合中的所有文档,可以通过以下命令使用firebase cli:做
firebase firestore:delete --help
更多选择。当然,这只能由firebase项目的所有者完成。
如果您希望允许其他用户从前端执行相同的操作(即所有文档,包括所有子集合),可以使用文档中“使用可调用云函数删除数据”部分中详细介绍的技术。
如本文件所述:
你可以利用
firestore:delete
firebase命令行界面(cli)中的命令。您可以使用firebase-tools
包裹。firebase cli使用cloud firestore restapi查找指定路径下的所有文档并分别删除它们。此实现不需要了解应用程序的特定数据层次结构,甚至可以查找和删除不再有父级的“孤立”文档。
如果只想删除
MyCollection
集合与子集合中的文档一起,您可以使用与上面相同的方法,使用指向文档的路径,例如:最后,如果您的问题是您已经删除了“父”文档,并且您不知道如何删除(孤立)子集合中的文档(因为您不知道父集合的id),那么您可以使用集合组查询来查询所有子集合
MySubcollection
子集合并检测父文档是否存在。下面的代码,在javascript中,可以做到这一点。