Deleting all documents in Firestore collection
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)
}
}
}
The following javascript function will delete any collection:
deleteCollection(path) {
firebase.firestore().collection(path).listDocuments().then(val => {
val.map((val) => {
val.delete()
})
})
}
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:
deleteCollection(path) {
// Get a new write batch
var batch = firebase.firestore().batch()
firebase.firestore().collection(path).listDocuments().then(val => {
val.map((val) => {
batch.delete(val)
})
batch.commit()
})
}
There is now an option in the firebase CLI to delete an entire firestore database:
firebase firestore:delete --all-collections