Menghapus dokumen dan kolom
Contoh berikut menunjukkan cara menghapus dokumen, kolom, dan koleksi.
Menghapus dokumen
Untuk menghapus dokumen, gunakan metode delete()
khusus bahasa berikut:
Web versi 9
Gunakan metode deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web versi 8
Gunakan metode delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
Gunakan metode delete()
:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
Gunakan metode 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
Android
Gunakan metode 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
Gunakan metode 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
Gunakan metode delete()
:
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
Gunakan metode delete()
:
Python
Gunakan metode delete()
:
Python
(Asinkron)
Gunakan metode delete()
:
C++
Gunakan metode 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
Gunakan metode delete()
:
Go
Gunakan metode Delete()
:
PHP
Gunakan metode delete()
:
Unity
Gunakan metode DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Gunakan metode DeleteAsync()
:
Ruby
Gunakan metode delete()
:
Jika Anda menghapus dokumen, Firestore tidak otomatis menghapus dokumen dalam subkoleksinya. Anda masih dapat mengakses dokumen subkoleksi dengan referensi.
Sebagai contoh, Anda dapat mengakses dokumen di jalur /mycoll/mydoc/mysubcoll/mysubdoc
meskipun Anda menghapus dokumen ancestor di /mycoll/mydoc
.
Dokumen ancestor yang tidak ada akan muncul di konsol, tetapi tidak akan muncul dalam hasil kueri dan snapshot.
Jika ingin menghapus satu dokumen dan semua dokumen dalam subkoleksinya, Anda harus melakukannya secara manual. Untuk informasi lebih lanjut, lihat Menghapus Koleksi.
Menghapus kolom
Untuk menghapus kolom tertentu dari dokumen, gunakan metode FieldValue.delete()
khusus bahasa berikut saat memperbarui dokumen:
Web versi 9
Gunakan metode 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 versi 8
Gunakan metode 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
Gunakan metode 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
Gunakan metode 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
Android
Gunakan metode 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
Gunakan metode 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
Gunakan metode 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
Gunakan metode FieldValue.delete()
:
Python
Gunakan metode firestore.DELETE_FIELD
:
Python
(Asinkron)
Gunakan metode firestore.DELETE_FIELD
:
C++
Gunakan metode FieldValue::Delete()
:
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
Gunakan metode FieldValue.delete()
:
Go
Gunakan metode firestore.Delete
:
PHP
Gunakan metode FieldValue::deleteField()
:
Unity
Gunakan metode FieldValue.Delete
:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Gunakan metode FieldValue.Delete
:
Ruby
Gunakan metode firestore.field_delete
:
Menghapus koleksi
Untuk menghapus seluruh koleksi atau subkoleksi di Firestore, ambil (baca) semua dokumen dalam koleksi atau subkoleksi itu, lalu lakukan penghapusan. Proses ini dikenai biaya operasi baca dan hapus. Jika koleksi berukuran besar , sebaiknya Anda menghapus dokumen dalam beberapa batch kecil untuk menghindari error akibat kehabisan memori. Ulangi prosesnya sampai Anda berhasil menghapus seluruh koleksi atau subkoleksi.
Untuk menghapus koleksi, diperlukan koordinasi permintaan penghapusan individu dengan jumlah tidak terbatas. Jika Anda perlu menghapus seluruh koleksi, hanya lakukan penghapusan dari lingkungan server yang tepercaya. Meskipun penghapusan koleksi dapat dilakukan dari klien seluler/web, tindakan itu berdampak negatif pada keamanan dan performa.
Cuplikan di bawah ini telah disederhanakan dan tidak mencakup penanganan error, keamanan, penghapusan subkoleksi, atau pemaksimalan performa. Untuk mempelajari lebih lanjut satu pendekatan yang disarankan untuk menghapus koleksi dalam produksi, lihat Menghapus Koleksi dan Subkoleksi.
Web
// 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
Android
// Deleting collections from an Android client is not recommended.
Java
Android
// Deleting collections from an Android client is not recommended.
Dart
Menghapus koleksi dari klien tidak direkomendasikan.
Java
Python
Python
(Asinkron)
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
Menghapus data dengan Firebase CLI
Anda juga bisa menggunakan Firebase CLI untuk menghapus dokumen dan koleksi. Gunakan perintah berikut untuk menghapus data:
firebase firestore:delete [options] <<path>>
Menghapus data dengan konsol
Anda dapat menghapus dokumen dan koleksi dari halaman Firestore di konsol. Menghapus dokumen dari konsol akan menghapus semua data bertingkat dalam dokumen tersebut, termasuk subkoleksi yang ada.
Menghapus data dengan kebijakan TTL
Kebijakan TTL menetapkan kolom tertentu sebagai waktu habis masa berlaku untuk dokumen dalam grup koleksi tertentu. Operasi penghapusan TTL diperhitungkan dalam biaya penghapusan dokumen Anda.
Untuk mengetahui informasi cara menyetel TTL, lihat Mengelola retensi data dengan kebijakan TTL.
Untuk mengetahui informasi kode error lebih lanjut, dan cara menyelesaikan masalah latensi saat menghapus data, lihat halaman pemecahan masalah.
Menghapus data dengan Dataflow
Dataflow adalah alat yang canggih untuk operasi massal di database Firestore Anda. Contoh untuk menghapus semua dokumen dalam grup koleksi dapat dilihat di postingan blog pengantar konektor Firestore untuk Dataflow.
Menggunakan penghapusan massal terkelola
Firestore mendukung penghapusan massal pada satu atau beberapa grup koleksi. Untuk informasi selengkapnya, lihat Menghapus data secara massal.