Heim  >  Artikel  >  Java  >  Wie lösche ich ganze Sammlungen und Untersammlungen in Firestore?

Wie lösche ich ganze Sammlungen und Untersammlungen in Firestore?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 05:24:02460Durchsuche

 How to Delete Entire Collections and Subcollections in Firestore?

Löschen von Sammlungen und Untersammlungen in Firestore

Firestore bietet keine direkte Methode zum Löschen ganzer Sammlungen oder Untersammlungen. Es gibt jedoch eine Problemumgehung, bei der die einzelnen Dokumente innerhalb der Sammlung oder Untersammlung gelöscht werden.

Modellierungsdatenstruktur

Die bereitgestellte Datenstruktur ist für den jeweiligen Anwendungsfall geeignet . Es ist nicht erforderlich, die Datenbank neu zu strukturieren, um bestimmte Listen zu löschen.

Schritte zum Löschen einer Sammlung oder Untersammlung

Um eine gesamte Sammlung oder Untersammlung zu löschen, befolgen Sie diese Schritte:

  1. Dokumente aus Untersammlungen abrufen:
    Alle Dokumente aus den Untersammlungen der zu löschenden Sammlung abrufen.
  2. Untersammlungsdokumente löschen:
    Löschen Sie alle Dokumente aus den in Schritt 1 abgerufenen Untersammlungen.
  3. Sammlungsdokumente löschen:
    Löschen Sie die Dokumente aus der Sammlung, die gelöscht werden sollen.

Stapelverarbeitung (optional)

Erwägen Sie bei größeren Sammlungen das Löschen von Dokumenten in Stapeln, um Speicherprobleme zu vermeiden.

Auswirkungen auf Sicherheit und Leistung

Firestore rät aufgrund möglicher negativer Auswirkungen auf Sicherheit und Leistung von großen Löschvorgängen ab. Führen Sie diese Vorgänge vorsichtig aus, insbesondere in nicht vertrauenswürdigen Umgebungen.

Implementierungscode für 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>

Das obige ist der detaillierte Inhalt vonWie lösche ich ganze Sammlungen und Untersammlungen in Firestore?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn