ドキュメントとフィールドを削除する
次の例は、ドキュメント、フィールド、コレクションを削除する方法を示しています。
ドキュメントを削除する
ドキュメントを削除するには、次の言語固有の delete()
メソッドを使用します。
Web バージョン 9
deleteDoc()
メソッドを使用します。
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web バージョン 8
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
Android
delete()
メソッドを使用します。
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
Android
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"), );
Java
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()
メソッドを使用します。
ドキュメントを削除しても、Firestore がそのドキュメントのサブコレクションに含まれるドキュメントを自動的に削除することはありません。サブコレクションのドキュメントには参照により引き続きアクセスできます。たとえば、パス /mycoll/mydoc/mysubcoll/mysubdoc
にあるドキュメントには、/mycoll/mydoc
の祖先ドキュメントを削除してもアクセスできます。
存在しない祖先ドキュメントはコンソールには表示されますが、クエリの結果やスナップショットには表示されません。
ドキュメントと、そのドキュメントのサブコレクション内のすべてのドキュメントを削除するには、手動での操作が必要です。詳しくは、コレクションを削除するをご覧ください。
フィールドを削除する
特定のフィールドをドキュメントから削除するには、ドキュメントを更新するときに次の言語固有の FieldValue.delete()
メソッドを使用します。
Web バージョン 9
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 バージョン 8
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
Android
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
Android
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);
Java
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
メソッドを使用します。
コレクションを削除する
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
Android
// Deleting collections from an Android client is not recommended.
Java
Android
// Deleting collections from an Android client is not recommended.
Dart
クライアントからコレクションを削除することはおすすめしません。
Java
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>>
コンソールでデータを削除する
コンソールの Firestore ページからドキュメントやコレクションを削除できます。コンソールからドキュメントを削除すると、そのドキュメント内のネストされたデータ(サブコレクションを含む)がすべて削除されます。
TTL ポリシーでデータを削除する
TTL ポリシーは、特定のフィールドを、特定のコレクション グループ内のドキュメントの有効期限として指定します。TTL の削除オペレーションは、ドキュメントの削除費用にカウントされます。
TTL の設定については、TTL ポリシーでデータ保持を管理するをご覧ください。
エラーコードと、データを削除する際のレイテンシの問題を解決する方法については、トラブルシューティング ページをご覧ください。
Dataflow でデータを削除する
Dataflow は、Firestore データベースでの一括オペレーションに最適なツールです。Dataflow 用の Firestore コネクタの概要のブログ記事には、コレクション グループ内のすべてのドキュメントを削除する例が記載されています。