Firestore でコレクション全体とサブコレクション全体を削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-28 05:24:02
オリジナル
471 人が閲覧しました

 How to Delete Entire Collections and Subcollections in Firestore?

Firestore でのコレクションとサブコレクションの削除

Firestore には、コレクション全体またはサブコレクション全体を削除する直接的な方法がありません。ただし、コレクションまたはサブコレクション内の個々のドキュメントを削除するという回避策があります。

データ構造のモデリング

提供されたデータ構造は、指定されたユースケースに適しています。 。特定のリストを削除するためにデータベースを再構築する必要はありません。

コレクションまたはサブコレクションを削除する手順

コレクション全体またはサブコレクション全体を削除するには、次の手順に従います。

  1. サブコレクションからドキュメントを取得:
    削除するコレクションのサブコレクションからすべてのドキュメントを取得します。
  2. サブコレクション ドキュメントの削除:
    手順 1 で取得したサブコレクションからすべてのドキュメントを削除します。
  3. コレクション ドキュメントの削除:
    削除するコレクションからドキュメントを削除します。

バッチ処理 (オプション)

コレクションが大きい場合は、メモリの問題を避けるためにドキュメントをバッチで削除することを検討してください。

セキュリティとパフォーマンスへの影響

Firestore は、セキュリティとパフォーマンスに悪影響を及ぼす可能性があるため、大規模な削除操作を抑制します。これらの操作は、特に信頼できない環境からは慎重に実行してください。

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>
ログイン後にコピー

以上がFirestore でコレクション全体とサブコレクション全体を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!