Rumah  >  Artikel  >  Java  >  Bagaimana untuk Memadamkan Koleksi dan Subkoleksi Firestore Tanpa Penstrukturan Semula?

Bagaimana untuk Memadamkan Koleksi dan Subkoleksi Firestore Tanpa Penstrukturan Semula?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 14:34:30509semak imbas

How to Delete Firestore Collections and Subcollections Without Restructuring?

Memadamkan Koleksi dan Subkoleksi dalam Firestore

Firestore menyediakan struktur data hierarki dengan koleksi dan dokumen. Koleksi boleh menyimpan subkoleksi, mewujudkan sarang berbilang peringkat. Apabila memadamkan senarai tertentu, cabaran timbul disebabkan ketidakupayaan untuk memadamkan ID senarai sambil mengekalkan subkoleksinya.

Penyelesaian Tanpa Penstrukturan Semula:

Untuk memintas isu ini, langkah berikut boleh digunakan:

  1. Dapatkan semula semua dokumen dalam subkoleksi pekerja dan padamkannya.
  2. Dapatkan semula semua dokumen dalam subkoleksi lokasi dan padamkannya.
  3. Padamkan dokumen listId.

Pendekatan ini memastikan penyingkiran lengkap senarai dan data yang berkaitan tanpa menjejaskan struktur pangkalan data.

Pertimbangan untuk Koleksi Besar:

Apabila berurusan dengan koleksi yang besar, adalah disyorkan untuk memadamkan dokumen dalam kelompok yang lebih kecil untuk mengurangkan kemungkinan ralat di luar ingatan. Proses pemadaman hendaklah diteruskan sehingga semua dokumen dalam koleksi atau subkoleksi telah dialih keluar.

Awas Berkenaan Operasi Padam:

Walaupun operasi pemadaman boleh dilakukan secara teknikal, Firebase pasukan amat tidak menggalakkan penggunaannya kerana potensi keselamatan dan implikasi prestasi. Ia hanya dinasihatkan untuk memadamkan koleksi kecil, terutamanya apabila dilakukan daripada persekitaran pelayan yang dipercayai.

Pelaksanaan Android:

Untuk aplikasi Android, coretan kod berikut boleh digunakan untuk padamkan koleksi:

<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>

Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Koleksi dan Subkoleksi Firestore Tanpa Penstrukturan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn