בדוגמאות הבאות מוסבר איך למחוק מסמכים, שדות ואוספים.
הנחיית AI לעזרה מבוססת-AI
כדי לקבל עזרה מ-AI, מעתיקים את ההנחיה שלמטה ומדביקים אותה בסוכן ה-AI לתכנות (כמו 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
משתמשים ב-method deleteDoc():
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web
משתמשים ב-method delete():
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
משתמשים ב-method delete():
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
משתמשים ב-method 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
משתמשים ב-method delete():
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
משתמשים ב-method 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
משתמשים ב-method delete():
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
משתמשים ב-method delete():
Python
משתמשים ב-method delete():
Python
משתמשים ב-method delete():
C++
משתמשים ב-method 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
משתמשים ב-method delete():
המשך
משתמשים ב-method Delete():
PHP
משתמשים ב-method delete():
Unity
משתמשים ב-method DeleteAsync():
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
משתמשים ב-method DeleteAsync():
Ruby
משתמשים ב-method delete():
כשמוחקים מסמך, Cloud Firestore לא מוחק באופן אוטומטי את המסמכים באוספי המשנה שלו. עדיין אפשר לגשת למסמכים של אוסף המשנה באמצעות הפניה.
לדוגמה, אפשר לגשת למסמך בנתיב /mycoll/mydoc/mysubcoll/mysubdoc גם אם מוחקים את מסמך ההורה ב-/mycoll/mydoc.
מסמכי הורה שלא קיימים מופיעים במסוף, אבל הם לא מופיעים בתוצאות של שאילתות וב-snapshots.
אם רוצים למחוק מסמך ואת כל המסמכים באוספי המשנה שלו, צריך לעשות את זה באופן ידני. מידע נוסף זמין במאמר מחיקת אוספים.
מחיקת שדות
כדי למחוק שדות ספציפיים ממסמך, משתמשים בשיטות FieldValue.delete() הבאות, הספציפיות לשפה, כשמעדכנים מסמך:
Web
משתמשים ב-method 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
משתמשים ב-method 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
משתמשים ב-method 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
משתמשים ב-method 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
משתמשים ב-method 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
משתמשים ב-method 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
משתמשים ב-method 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
משתמשים ב-method FieldValue.delete():
Python
משתמשים ב-method firestore.DELETE_FIELD:
Python
משתמשים ב-method firestore.DELETE_FIELD:
C++
משתמשים ב-method FieldValue::Delete():
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
משתמשים ב-method FieldValue.delete():
המשך
משתמשים ב-method firestore.Delete:
PHP
משתמשים ב-method FieldValue::deleteField():
Unity
משתמשים ב-method FieldValue.Delete:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
משתמשים ב-method FieldValue.Delete:
Ruby
משתמשים ב-method 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
המשך
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 אפשר למחוק כמה קבוצות של אוספים בבת אחת. מידע נוסף זמין במאמר מחיקת נתונים בכמות גדולה.
מחבר Dataflow
אתם יכולים להשתמש ב-Dataflow כדי לבצע פעולות בכמות גדולה במסד הנתונים. זו האפשרות הכי גמישה, אבל היא גם דורשת יותר הגדרות מאפשרויות אחרות למחיקה בכמות גדולה. בפוסט בבלוג, שמציג את המחבר של Cloud Firestore ל-Dataflow, יש דוגמה למחיקת כל המסמכים בקבוצת אוספים.