مثالهای زیر نحوه حذف اسناد، فیلدها، و مجموعهها را نشان میدهد.
پیامواره هوش مصنوعی برای کمک هوش مصنوعی
برای کمک هوش مصنوعی، پیامواره زیر را در عامل کدنویسی هوش مصنوعی خود (مانند Gemini در Android Studio، Antigravity، Claude Code، Codex، و Cursor) کپی کنید. میتوانید پیامواره را سفارشیسازی کنید و با نمایندهتان تکرار کنید. برای اطلاعات دقیق نصب، به مهارتهای عامل 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"), );
جاوا
از روش delete() استفاده کنید:
پایتون
از روش 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() استفاده کنید:
رفتن
از روش Delete() استفاده کنید:
PHP
از روش delete() استفاده کنید:
Unity
از روش DeleteAsync() استفاده کنید:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
سی شارپ
از روش 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);
جاوا
از روش FieldValue.delete() استفاده کنید:
پایتون
از روش 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() استفاده کنید:
رفتن
از روش 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 } };
سی شارپ
از روش 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
حذف مجموعهها از کلاینت توصیه نمیشود.
جاوا
پایتون
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
رفتن
PHP
Unity
// This is not supported. Delete data using CLI as discussed below.سی شارپ
Ruby
حذف دادهها با خطمشیهای TTL
خطمشی TTL فیلد مشخصی را بهعنوان زمان انقضای اسناد در گروه مجموعه مشخصی تعیین میکند. عملیات حذف TTL در هزینههای حذف سند شما لحاظ میشود.
برای اطلاعات بیشتر درباره تنظیم TTL، به مدیریت حفظ دادهها با خطمشیهای TTL مراجعه کنید.
کارهای حذف انبوه
Cloud Firestore از چندین ابزار برای حذف انبوه پشتیبانی میکند. باید ابزاری را براساس تعداد اسنادی که باید حذف کنید و سطح پیکربندی موردنیازتان انتخاب کنید.
برای کارهای کوچکتر با هزاران سند، از کنسول یا واسط خط فرمان Firebase استفاده کنید. برای کارهای بزرگتر، ممکن است این ابزارها با اتمام مهلت مواجه شوند و لازم باشد ابزار را چندین بار اجرا کنید.
کنسول
میتوانید اسناد و مجموعهها را از صفحه Cloud Firestore در کنسول حذف کنید. حذف سند از کنسول، همه دادههای تودرتو در آن سند، ازجمله همه زیرمجموعهها را حذف میکند.
واسط خط فرمان Firebase
همچنین میتوانید از واسط خط فرمان Firebase برای حذف اسناد و مجموعهها استفاده کنید. از فرمان زیر برای حذف دادهها استفاده کنید:
firebase firestore:delete --database=DATABASE_ID PATH
DATABASE_ID را با شناسه پایگاه دادهتان و PATH را با مسیر سند یا مجموعه جایگزین کنید.
برای کارهای حذف بزرگ (میلیونها سند)، از یکی از موارد زیر استفاده کنید:
حذف انبوه مدیریتشده
Cloud Firestore از حذف انبوه یک یا چند گروه مجموعه پشتیبانی میکند. برای اطلاعات بیشتر، به حذف انبوه دادهها مراجعه کنید.
رابط Dataflow
میتوانید از Dataflow برای عملیات انبوه در پایگاه دادهتان استفاده کنید. این گزینه بیشترین قابلیت پیکربندی را دارد، اما نسبتبه سایر گزینههای حذف انبوه به راهاندازی بیشتری نیاز دارد. Cloud Firestore connector for Dataflow introduction blog post has an example of deleting all documents in a collection group. را ببینید.