首页 > 解决方案 > 批量写入中的 Firestore 删除是原子的吗?

问题描述

我对删除的 Firestore 文档感到困惑。文档说:

也不能保证删除操作会统一成功或失败,因此请准备好处理部分删除的情况......没有原子删除集合的操作。

https://cloud.google.com/firestore/docs/solutions/delete-collections

不知道上面的说法是只指示例中的云功能还是一般的大规模删除。

但是,批量写入可以执行删除,而且它们是原子的。因此,如果一个少于 500 个文档的集合(批量写入操作限制)运行删除的批量写入操作,那不是原子集合删除吗?关于批量写入的文档没有提供说明,因为它没有说明一批操作是原子完成的,只是写入。我无法猜测这是否是故意的。

一批写入原子完成,可以写入多个文档。

https://cloud.google.com/firestore/docs/manage-data/transactions

删除整个集合(因为我知道随之而来的警告),在批量写入中执行删除是原子的吗?

标签: firebasegoogle-cloud-firestore

解决方案


不知道上面的说法是只指示例中的云功能还是一般的大规模删除。

它适用于两者。这两种情况都涉及多次调用以删除所有文档,并且这些调用可能每次都成功或失败,从而使集合处于不一致的状态(部分删除)。需要进行第二波操作来清理其余文件。

另一方面,批量删除 500 个或更少的文档将为您保证单个批次的“全有或全无”行为。但是如果你有超过 500 个要删除,则需要多个批次,现在你又回到了上面的同一个问题——其中任何数量都可能成功或失败,你需要处理这个问题。


推荐阅读