Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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)       }     }   } 
like image 346
Jake Avatar asked Dec 18 '17 00:12

Jake


People also ask

How do I delete multiple documents in firebase?

To delete multiple documents, you can do a single batched write. The WriteBatch class has a delete() method for this purpose.

Does firestore delete empty collections?

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.

How do I find out how many documents are in my firestore collection?

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.


1 Answers

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()     }) } 
like image 140
Aron Gates Avatar answered Oct 07 '22 00:10

Aron Gates