ตัวอย่างต่อไปนี้สาธิตวิธีการลบเอกสาร ฟิลด์ และคอลเลกชัน
ลบเอกสาร
หากต้องการลบเอกสาร ให้ใช้ delete()
เฉพาะภาษาต่อไปนี้:
Web modular API
ใช้ deleteDoc()
วิธีการ:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web namespaced API
ใช้ delete()
วิธีการ:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
สวิฟท์
ใช้ delete()
วิธีการ:
db.collection("cities").document("DC").delete() { err in if let err = err { print("Error removing document: \(err)") } else { print("Document successfully removed!") } }
วัตถุประสงค์-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()
วิธีการ:
หลาม
ใช้ delete()
วิธีการ:
Python
ใช้ delete()
วิธีการ:
ซี++
ใช้ 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; } });
โหนด js
ใช้ delete()
วิธีการ:
ไป
ใช้ Delete()
วิธีการ:
PHP
ใช้ delete()
วิธีการ:
ความสามัคคี
ใช้เมธอด DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
ค#
ใช้เมธอด DeleteAsync()
:
ทับทิม
ใช้ delete()
วิธีการ:
เมื่อคุณลบเอกสาร Cloud Firestore จะไม่ลบเอกสารภายในคอลเลกชันย่อยโดยอัตโนมัติ คุณยังคงสามารถเข้าถึงเอกสารคอลเลกชันย่อยได้โดยการอ้างอิง ตัวอย่างเช่น คุณสามารถเข้าถึงเอกสารได้ที่พาธ /mycoll/mydoc/mysubcoll/mysubdoc
แม้ว่าคุณจะลบเอกสารบรรพบุรุษที่ /mycoll/mydoc
ก็ตาม
เอกสารระดับบนสุดที่ไม่มีอยู่จริง จะปรากฏในคอนโซล แต่ไม่ปรากฏในผลลัพธ์การค้นหาและสแนปชอต
หากคุณต้องการลบเอกสารและเอกสารทั้งหมดภายในคอลเลกชันย่อย คุณต้องดำเนินการด้วยตนเอง สำหรับข้อมูลเพิ่มเติม โปรดดู ลบคอลเลกชัน
ลบฟิลด์
หากต้องการลบฟิลด์เฉพาะออกจากเอกสาร ให้ใช้วิธีการ FieldValue.delete()
เฉพาะภาษาต่อไปนี้ เมื่อคุณอัปเดตเอกสาร:
Web modular API
ใช้ 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 namespaced API
ใช้เมธอด 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() });
สวิฟท์
ใช้เมธอด FieldValue.delete()
:
db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) { err in if let err = err { print("Error updating document: \(err)") } else { print("Document successfully updated") } }
วัตถุประสงค์-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()
:
หลาม
ใช้เมธอด firestore.DELETE_FIELD
:
Python
ใช้เมธอด firestore.DELETE_FIELD
:
ซี++
ใช้เมธอด FieldValue::Delete()
:
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
โหนด js
ใช้เมธอด FieldValue.delete()
:
ไป
ใช้เมธอด firestore.Delete
:
PHP
ใช้เมธอด FieldValue::deleteField()
:
ความสามัคคี
ใช้เมธอด FieldValue.Delete
:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
ค#
ใช้เมธอด FieldValue.Delete
:
ทับทิม
ใช้เมธอด firestore.field_delete
:
ลบคอลเลกชัน
หากต้องการลบคอลเลกชันหรือคอลเลกชันย่อยทั้งหมดใน Cloud Firestore ให้ดึง (อ่าน) เอกสารทั้งหมดภายในคอลเลกชันหรือคอลเลกชันย่อยแล้วลบออก กระบวนการนี้มีค่าใช้จ่ายทั้งการอ่านและการลบ หากคุณมีคอลเลกชันขนาดใหญ่ คุณอาจต้องการลบเอกสารเป็นกลุ่มเล็กๆ เพื่อหลีกเลี่ยงข้อผิดพลาดหน่วยความจำไม่เพียงพอ ทำซ้ำขั้นตอนนี้จนกว่าคุณจะลบคอลเลกชันหรือคอลเลกชันย่อยทั้งหมด
การลบคอลเลกชันจำเป็นต้องประสานคำขอลบแต่ละรายการโดยไม่จำกัดจำนวน หากคุณต้องการลบคอลเลกชันทั้งหมด ให้ดำเนินการจากสภาพแวดล้อมเซิร์ฟเวอร์ที่เชื่อถือได้เท่านั้น แม้ว่าจะสามารถลบคอลเลกชันออกจากไคลเอนต์มือถือ/เว็บได้ แต่การกระทำดังกล่าวมีผลกระทบเชิงลบต่อความปลอดภัยและประสิทธิภาพ
ตัวอย่างด้านล่างค่อนข้างเรียบง่ายและไม่เกี่ยวข้องกับการจัดการข้อผิดพลาด ความปลอดภัย การลบคอลเลกชันย่อย หรือการเพิ่มประสิทธิภาพสูงสุด หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการที่แนะนำหนึ่งวิธีในการลบคอลเลกชันในการใช้งานจริง โปรดดูที่ การลบคอลเลกชันและคอลเลกชันย่อย
เว็บ
// Deleting collections from a Web client is not recommended.
สวิฟท์
// Deleting collections from an Apple client is not recommended.
วัตถุประสงค์-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
ซี++
// This is not supported. Delete data using CLI as discussed below.
โหนด js
ไป
PHP
ความสามัคคี
// This is not supported. Delete data using CLI as discussed below.
ค#
ทับทิม
ลบข้อมูลด้วย Firebase CLI
คุณยังสามารถใช้ Firebase CLI เพื่อลบเอกสารและคอลเลกชันได้ ใช้คำสั่งต่อไปนี้เพื่อลบข้อมูล:
firebase firestore:delete [options] <<path>>
ลบข้อมูลด้วยคอนโซล
คุณสามารถ ลบเอกสารและคอลเลกชันได้จากหน้า Cloud Firestore ในคอนโซล การลบเอกสารออกจากคอนโซลจะลบข้อมูลที่ซ้อนกันทั้งหมดในเอกสารนั้น รวมถึงคอลเล็กชันย่อยด้วย
ลบข้อมูลด้วยนโยบาย TTL
นโยบาย TTL กำหนดฟิลด์ที่กำหนดเป็นเวลาหมดอายุสำหรับเอกสารในกลุ่มคอลเลกชันที่กำหนด การดำเนินการลบ TTL นับเป็นค่าใช้จ่ายในการลบเอกสารของคุณ
สำหรับข้อมูลเกี่ยวกับการตั้งค่า TTL โปรดดู ที่จัดการการเก็บรักษาข้อมูลด้วยนโยบาย TTL
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรหัสข้อผิดพลาดและวิธีแก้ไขปัญหาเวลาแฝงเมื่อลบข้อมูล โปรดดู หน้าการแก้ไขปัญหา
ลบข้อมูลด้วย Dataflow
Dataflow เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการดำเนินการจำนวนมากในฐานข้อมูล Firestore ของคุณ โพสต์ในบล็อก แนะนำตัวเชื่อมต่อ Firestore สำหรับ Dataflow มีตัวอย่างการลบเอกสารทั้งหมดในกลุ่มคอลเลกชัน