一尘不染

删除Firestore集合中的所有文档

swift

我正在寻找清除整个收藏夹的方法。我看到有一个批处理更新选项,但这需要我知道集合中的所有文档ID。

我正在寻找一种简单地删除集合中每个文档的方法。

谢谢!

编辑:下面的答案是正确的,我使用以下方法:

  func delete(collection: CollectionReference, batchSize: Int = 100) {
    // Limit query to avoid out-of-memory errors on large collections.
    // When deleting a collection guaranteed to fit in memory, batching can be avoided entirely.
    collection.limit(to: batchSize).getDocuments { (docset, error) in
      // An error occurred.
      let docset = docset

      let batch = collection.firestore.batch()
      docset?.documents.forEach { batch.deleteDocument($0.reference) }

      batch.commit {_ in
        self.delete(collection: collection, batchSize: batchSize)
      }
    }
  }

阅读 245

收藏
2020-07-07

共1个答案

一尘不染

没有API可以一次性删除整个集合(或其内容)。

Firestore文档中

要在Cloud
Firestore中删除整个集合或子集合,请检索集合或子集合中的所有文档并将其删除。如果集合较大,则可能要分批删除文档,以避免内存不足的错误。重复该过程,直到您删除了整个集合或子集合。

该文档中甚至有一个Swift示例,因此我建议您尝试一下。

Firebase
CLI的文档似乎暗示可以用一个命令删除整个集合,但是我自己没有尝试过。如果这适合您的需求,建议您查阅firestore:delete命令的(稀疏)文档

2020-07-07