>  기사  >  Java  >  Firestore에서 전체 컬렉션 및 하위 컬렉션을 삭제하는 방법은 무엇입니까?

Firestore에서 전체 컬렉션 및 하위 컬렉션을 삭제하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 05:24:02566검색

 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.