I'm looking for a way to clear an entire collection. I saw that there is a batch update option, but that would require me to know all of the document IDs in the collection.
I'm looking for a way to simply delete every document in the collection.
Thanks!
Edit: Answer below is correct, I used the following:
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)
}
}
}
There is no API to delete an entire collection (or its contents) in one go.
From the Firestore documentation:
There is even a Swift sample in that documentation, so I recommend you try it.
The documentation for the Firebase CLI seems to hint that it's possible to delete an entire collection with a single command, but I haven't tried this myself. If this would suit your needs, I recommend you check out the (sparse) documentation for the
firestore:delete
command.The following javascript function will delete any collection:
This works by iterating through every document and deleting each.
Alternatively, you can make use of Firestore's batch commands and delete all at once using the following function:
There is now an option in the firebase CLI to delete an entire firestore database: