Suppression de collections et de sous-collections dans Firestore
Firestore ne fournit pas de méthode directe pour supprimer des collections ou des sous-collections entières. Cependant, il existe une solution de contournement qui consiste à supprimer les documents individuels au sein de la collection ou de la sous-collection.
Modélisation de la structure des données
La structure de données fournie est adaptée au cas d'utilisation donné. . Il n'est pas nécessaire de restructurer la base de données pour supprimer des listes spécifiques.
Étapes de suppression d'une collection ou d'une sous-collection
Pour supprimer une collection ou une sous-collection entière, suivez ces étapes :
Traitement par lots (facultatif)
Pour les collections plus importantes, envisagez de supprimer des documents par lots pour éviter les problèmes de mémoire.
Implications en matière de sécurité et de performances
Firestore décourage les opérations de suppression volumineuses en raison d'impacts négatifs potentiels sur la sécurité et les performances. Effectuez ces opérations avec prudence, en particulier dans des environnements non fiables.
Code de mise en œuvre pour Android
<code class="java">private void deleteCollection(final CollectionReference collection, Executor executor) { Tasks.call(executor, () -> { int batchSize = 10; Query query = collection.orderBy(FieldPath.documentId()).limit(batchSize); List<DocumentSnapshot> deleted = deleteQueryBatch(query); while (deleted.size() >= batchSize) { DocumentSnapshot last = deleted.get(deleted.size() - 1); query = collection.orderBy(FieldPath.documentId()).startAfter(last.getId()).limit(batchSize); deleted = deleteQueryBatch(query); } return null; }); } @WorkerThread private List<DocumentSnapshot> deleteQueryBatch(final Query query) throws Exception { QuerySnapshot querySnapshot = Tasks.await(query.get()); WriteBatch batch = query.getFirestore().batch(); for (DocumentSnapshot snapshot : querySnapshot) { batch.delete(snapshot.getReference()); } Tasks.await(batch.commit()); return querySnapshot.getDocuments(); }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!