Löschen von Sammlungen und Untersammlungen in Firestore
Firestore bietet eine hierarchische Datenstruktur mit Sammlungen und Dokumenten. Sammlungen können Untersammlungen enthalten, wodurch eine mehrstufige Verschachtelung entsteht. Beim Löschen einer bestimmten Liste besteht die Herausforderung darin, dass eine Listen-ID nicht gelöscht und gleichzeitig ihre Untersammlungen beibehalten werden können.
Lösung ohne Umstrukturierung:
Um dieses Problem zu umgehen, Die folgenden Schritte können verwendet werden:
Dieser Ansatz stellt die vollständige Entfernung der Liste und der zugehörigen Daten sicher, ohne die Struktur der Datenbank zu beeinträchtigen.
Überlegungen für große Sammlungen:
Beim Umgang mit großen Sammlungen wird empfohlen, Dokumente in kleineren Stapeln zu löschen, um potenzielle Fehler aufgrund von unzureichendem Arbeitsspeicher zu vermeiden. Der Löschvorgang sollte fortgesetzt werden, bis alle Dokumente innerhalb der Sammlung oder Untersammlung entfernt wurden.
Vorsicht bei Löschvorgängen:
Der Löschvorgang ist zwar technisch möglich, die Firebase Aufgrund möglicher Auswirkungen auf Sicherheit und Leistung rät das Team dringend von der Verwendung ab. Es wird nur zum Löschen kleiner Sammlungen empfohlen, insbesondere wenn es von einer vertrauenswürdigen Serverumgebung aus durchgeführt wird.
Android-Implementierung:
Für Android-Anwendungen kann das folgende Codefragment verwendet werden Eine Sammlung löschen:
<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>
Das obige ist der detaillierte Inhalt vonWie lösche ich Firestore-Sammlungen und Untersammlungen ohne Umstrukturierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!