다음 예시는 문서, 필드, 컬렉션을 삭제하는 방법을 보여줍니다.
문서 삭제
문서를 삭제하려면 다음과 같은 언어별 delete()
메서드를 사용합니다.
Web
deleteDoc()
메서드를 사용합니다.
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web
delete()
메서드를 사용합니다.
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
delete()
메서드를 사용합니다.
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
deleteDocumentWithCompletion:
메서드를 사용합니다.
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"DC"] deleteDocumentWithCompletion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error removing document: %@", error); } else { NSLog(@"Document successfully removed!"); } }];
Kotlin+KTX
delete()
메서드를 사용합니다.
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
delete()
메서드를 사용합니다.
db.collection("cities").document("DC") .delete() .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully deleted!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error deleting document", e); } });
Dart
delete()
메서드를 사용합니다.
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
자바
delete()
메서드를 사용합니다.
Python
delete()
메서드를 사용합니다.
Python
delete()
메서드를 사용합니다.
C++
Delete()
메서드를 사용합니다.
db->Collection("cities").Document("DC").Delete().OnCompletion( [](const Future<void>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot successfully deleted!" << std::endl; } else { std::cout << "Error deleting document: " << future.error_message() << std::endl; } });
Node.js
delete()
메서드를 사용합니다.
Go
Delete()
메서드를 사용합니다.
PHP
delete()
메서드를 사용합니다.
Unity
DeleteAsync()
메서드를 사용합니다.
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
DeleteAsync()
메서드를 사용합니다.
Ruby
delete()
메서드를 사용합니다.
문서를 삭제해도 Cloud Firestore는 하위 컬렉션 내 문서를 자동으로 삭제하지 않습니다. 따라서 참조를 통해 하위 컬렉션 문서에 액세스할 수 있습니다.
예를 들어 /mycoll/mydoc
에 상위 문서가 없어도 /mycoll/mydoc/mysubcoll/mysubdoc
경로에 있는 문서에 액세스할 수 있습니다.
존재하지 않는 상위 문서는 콘솔에 표시되지만 쿼리나 스냅샷에는 표시되지 않습니다.
문서를 삭제할 때 하위 컬렉션의 문서까지 삭제하려면 수동으로 삭제해야 합니다. 자세한 내용은 컬렉션 삭제를 참조하세요.
필드 삭제
문서에서 특정 필드를 삭제하려면 문서를 업데이트할 때 다음과 같은 언어별 FieldValue.delete()
메서드를 사용합니다.
Web
deleteField()
메서드를 사용합니다.
import { doc, updateDoc, deleteField } from "firebase/firestore"; const cityRef = doc(db, 'cities', 'BJ'); // Remove the 'capital' field from the document await updateDoc(cityRef, { capital: deleteField() });
Web
FieldValue.delete()
메서드를 사용합니다.
var cityRef = db.collection('cities').doc('BJ'); // Remove the 'capital' field from the document var removeCapital = cityRef.update({ capital: firebase.firestore.FieldValue.delete() });
Swift
FieldValue.delete()
메서드를 사용합니다.
do { try await db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
Objective-C
fieldValueForDelete:
메서드를 사용합니다.
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"BJ"] updateData:@{ @"capital": [FIRFieldValue fieldValueForDelete] } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error updating document: %@", error); } else { NSLog(@"Document successfully updated"); } }];
Kotlin+KTX
FieldValue.delete()
메서드를 사용합니다.
val docRef = db.collection("cities").document("BJ") // Remove the 'capital' field from the document val updates = hashMapOf<String, Any>( "capital" to FieldValue.delete(), ) docRef.update(updates).addOnCompleteListener { }
Java
FieldValue.delete()
메서드를 사용합니다.
DocumentReference docRef = db.collection("cities").document("BJ"); // Remove the 'capital' field from the document Map<String,Object> updates = new HashMap<>(); updates.put("capital", FieldValue.delete()); docRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() { // ... // ...
Dart
FieldValue.delete()
메서드를 사용합니다.
final docRef = db.collection("cities").doc("BJ"); // Remove the 'capital' field from the document final updates = <String, dynamic>{ "capital": FieldValue.delete(), }; docRef.update(updates);
자바
FieldValue.delete()
메서드를 사용합니다.
Python
firestore.DELETE_FIELD
메서드를 사용합니다.
Python
firestore.DELETE_FIELD
메서드를 사용합니다.
C++
FieldValue::Delete()
메서드를 사용합니다.
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
FieldValue.delete()
메서드를 사용합니다.
Go
firestore.Delete
메서드를 사용합니다.
PHP
FieldValue::deleteField()
메서드를 사용합니다.
Unity
FieldValue.Delete
메서드를 사용합니다.
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
FieldValue.Delete
메서드를 사용합니다.
Ruby
firestore.field_delete
메서드를 사용합니다.
컬렉션 삭제
Cloud Firestore에서 전체 컬렉션 또는 하위 컬렉션을 삭제하려면 컬렉션 또는 하위 컬렉션에 포함된 모든 문서를 검색(읽기)하여 삭제합니다. 이 프로세스에는 읽기 및 삭제 비용이 모두 발생합니다. 컬렉션의 규모가 큰 경우 문서를 조금씩 나누어 삭제하면 메모리 부족 오류를 방지할 수 있습니다. 전체 컬렉션 또는 하위 컬렉션이 삭제될 때까지 이 과정을 반복하세요.
컬렉션을 삭제하려면 제한되지 않은 개별 삭제 요청 수를 조정해야 합니다. 전체 컬렉션은 신뢰할 수 있는 서버 환경에서만 삭제하세요. 모바일 또는 웹 클라이언트에서도 컬렉션을 삭제할 수 있지만, 이 경우 보안 및 성능에 부정적인 영향을 미칩니다.
아래의 스니펫은 다소 단순화되어 있으므로 오류 처리, 보안, 하위 컬렉션 삭제 또는 성능 극대화에 대해서는 다루지 않습니다. 프로덕션 환경에서 컬렉션을 삭제하는 한 가지 추천 방법에 대한 자세한 내용은 컬렉션 및 하위 컬렉션 삭제를 참조하세요.
웹
// Deleting collections from a Web client is not recommended.
Swift
// Deleting collections from an Apple client is not recommended.
Objective-C
// Deleting collections from an Apple client is not recommended.
Kotlin+KTX
// Deleting collections from an Android client is not recommended.
Java
// Deleting collections from an Android client is not recommended.
Dart
컬렉션은 클라이언트에서 삭제하지 않는 것이 좋습니다.
자바
Python
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Go
PHP
Unity
// This is not supported. Delete data using CLI as discussed below.
C#
Ruby
Firebase CLI를 사용한 데이터 삭제
Firebase CLI를 사용해 문서 및 컬렉션을 삭제할 수도 있습니다. 데이터를 삭제하려면 다음 명령어를 사용하세요.
firebase firestore:delete [options] <<path>>
Console을 사용한 데이터 삭제
콘솔의 Cloud Firestore 페이지에서 문서 및 컬렉션을 삭제할 수 있습니다. Console에서 문서를 삭제하면 하위 컬렉션을 포함하여 해당 문서의 모든 중첩된 데이터가 삭제됩니다.
TTL 정책을 사용하여 데이터 삭제
TTL 정책은 특정 필드를 특정 컬렉션 그룹의 문서 만료 시간으로 지정합니다. TTL 삭제 작업은 문서 삭제 비용에 포함됩니다.
TTL 설정에 대한 자세한 내용은 TTL 정책으로 데이터 보관 관리를 참조하세요.
오류 코드 및 데이터 삭제 시 지연 시간 문제를 해결하는 방법에 대한 자세한 내용은 문제해결 페이지를 참고하세요.
Dataflow를 사용하여 데이터 삭제
Dataflow는 Firestore 데이터베이스에서 일괄 작업을 수행할 수 있는 유용한 도구입니다. Dataflow용 Firestore 커넥터 소개 블로그 게시물에는 컬렉션 그룹의 모든 문서를 삭제하는 예시가 나와 있습니다.
관리형 일괄 삭제 사용
Cloud Firestore는 하나 이상의 컬렉션 그룹을 일괄 삭제하는 기능을 지원합니다. 자세한 내용은 데이터 일괄 삭제를 참조하세요.