Чтобы удалить всю коллекцию или вложенную коллекцию из базы данных Cloud Firestore, вам нужно извлечь все документы в коллекции или вложенной коллекции и удалить их.
Если у вас есть большие коллекции, вы можете удалить документы меньшими партиями, чтобы избежать ошибок нехватки памяти. Поэтому вы должны повторять этот процесс, пока не удалите всю коллекцию или вложенную коллекцию.
Даже если команда удаления не рекомендует команду Firebase, поскольку она имеет негативные последствия для безопасности и производительности, вы все равно можете сделать это, но только для small collections
. Если вам нужно удалить целые коллекции для Интернета, делайте это только из среды доверенного сервера.
Для Kotlin, пожалуйста, используйте следующие функции:
private fun deleteCollection(collection: CollectionReference, executor: Executor) {
Tasks.call(executor) {
val batchSize = 10
var query = collection.orderBy(FieldPath.documentId()).limit(batchSize.toLong())
var deleted = deleteQueryBatch(query)
while (deleted.size >= batchSize) {
val last = deleted[deleted.size - 1]
query = collection.orderBy(FieldPath.documentId()).startAfter(last.id).limit(batchSize.toLong())
deleted = deleteQueryBatch(query)
}
null
}
}
@WorkerThread
@Throws(Exception::class)
private fun deleteQueryBatch(query: Query): List<DocumentSnapshot> {
val querySnapshot = Tasks.await(query.get())
val batch = query.firestore.batch()
for (snapshot in querySnapshot) {
batch.delete(snapshot.reference)
}
Tasks.await(batch.commit())
return querySnapshot.documents
}