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) } } }
To delete multiple documents, you can do a single batched write. The WriteBatch class has a delete() method for this purpose.
Nope, there is nothing in place to automatically delete empty documents, as you might have a valid reason for wanting those empty documents to exist.
If you need a count, just use the collection path and prefix it with counters . As this approach uses a single database and document, it is limited to the Firestore constraint of 1 Update per Second for each counter.
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() }) }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With