ตัวอย่างต่อไปนี้แสดงวิธีลบเอกสาร ฟิลด์ และคอลเล็กชัน
พรอมต์ AI รายการสำหรับความช่วยเหลือจาก AI
หากต้องการความช่วยเหลือจาก AI ให้คัดลอกพรอมต์ด้านล่างลงในตัวแทนการเขียนโค้ด AI (เช่น Gemini ใน Android Studio, Antigravity, Claude Code, Codex และ Cursor) คุณสามารถปรับแต่งพรอมต์และปรับปรุงซ้ำๆ กับ Agent ได้ ดูข้อมูลการติดตั้งโดยละเอียดได้ที่ทักษะเอเจนต์ Firebase
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me delete documents, fields, and collections from Cloud Firestore in my app.
ลบเอกสาร
หากต้องการลบเอกสาร ให้ใช้เมธอด 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
ใช้เมธอด 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"), );
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() ดังนี้
เมื่อคุณลบเอกสาร Cloud Firestore จะไม่ลบเอกสารภายในคอลเล็กชันย่อยโดยอัตโนมัติ แต่คุณจะยังเข้าถึงเอกสารคอลเล็กชันย่อยได้โดยการอ้างอิง
เช่น คุณจะเข้าถึงเอกสารได้ที่เส้นทาง /mycoll/mydoc/mysubcoll/mysubdoc แม้ว่าจะลบเอกสารหลักที่ /mycoll/mydoc ไปแล้วก็ตาม
เอกสารระดับบนสุดที่ไม่มีอยู่จริงจะปรากฏในคอนโซล แต่จะไม่ปรากฏในผลการค้นหาและสแนปชอต
หากต้องการลบเอกสารและเอกสารทั้งหมดภายในคอลเล็กชันย่อย คุณต้องดำเนินการด้วยตนเอง ดูข้อมูลเพิ่มเติมได้ที่ลบคอลเล็กชัน
ลบช่อง
หากต้องการลบช่องที่เฉพาะเจาะจงออกจากเอกสาร ให้ใช้เมธอด 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
ใช้เมธอด 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);
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 ดังนี้
ลบคอลเล็กชัน
หากต้องการลบคอลเล็กชันหรือคอลเล็กชันย่อยทั้งหมดใน 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
// Deleting collections from an Android client is not recommended.Java
// 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
ลบข้อมูลด้วยนโยบาย TTL
นโยบาย TTL จะกำหนดช่องที่ระบุเป็นเวลาหมดอายุสำหรับเอกสารในกลุ่มคอลเล็กชันที่ระบุ การดำเนินการลบ TTL จะนับรวมในค่าใช้จ่ายในการลบเอกสาร
ดูข้อมูลเกี่ยวกับการตั้งค่า TTL ได้ที่หัวข้อจัดการการเก็บรักษาข้อมูลด้วยนโยบาย TTL
งานลบหลายรายการพร้อมกัน
Cloud Firestore รองรับเครื่องมือหลายอย่างสำหรับการลบหลายรายการพร้อมกัน คุณควรเลือกเครื่องมือตามจำนวนเอกสารที่ต้องการลบและระดับความสามารถในการกำหนดค่าที่ต้องการ
สำหรับงานขนาดเล็กที่มีเอกสารหลายพันรายการ ให้ใช้คอนโซลหรือ Firebase CLI สำหรับงานขนาดใหญ่ เครื่องมือเหล่านี้อาจเริ่มหมดเวลาและกำหนดให้คุณต้องเรียกใช้เครื่องมือหลายครั้ง
คอนโซล
คุณสามารถลบเอกสารและคอลเล็กชันออกจากหน้า Cloud Firestore ในคอนโซลได้ การลบเอกสารออกจากคอนโซลจะเป็นการลบข้อมูลที่ซ้อนกันทั้งหมดในเอกสารนั้น รวมถึงคอลเล็กชันย่อยด้วย
Firebase CLI
นอกจากนี้ คุณยังใช้ Firebase CLI เพื่อลบเอกสารและคอลเล็กชันได้ด้วย ใช้คำสั่งต่อไปนี้เพื่อลบข้อมูล
firebase firestore:delete --database=DATABASE_ID PATH
แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล และ PATH ด้วยเส้นทางไปยังเอกสารหรือคอลเล็กชัน
สำหรับงานลบขนาดใหญ่ (เอกสารหลายล้านรายการ) ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
การลบหลายรายการพร้อมกันที่มีการจัดการ
Cloud Firestore รองรับการลบกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่มพร้อมกัน ดูข้อมูลเพิ่มเติมได้ที่ลบข้อมูลหลายรายการพร้อมกัน
เครื่องมือเชื่อมต่อ Dataflow
คุณสามารถใช้ Dataflow สำหรับการดำเนินการเป็นกลุ่มในฐานข้อมูลได้ ตัวเลือกนี้กำหนดค่าได้มากที่สุด แต่ก็ต้องมีการตั้งค่ามากกว่าตัวเลือกการลบหลายรายการพร้อมกันอื่นๆ ดูบล็อกโพสต์แนะนำตัวเชื่อมต่อ Cloud Firestore สำหรับ Dataflow ซึ่งมีตัวอย่างการลบเอกสารทั้งหมดในกลุ่มคอลเล็กชัน