توضح الأمثلة التالية كيفية حذف المستندات والحقول والمجموعات.
حذف المستندات
لحذف مستند، استخدِم طريقة 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+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"), );
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+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);
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+KTX
// 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
حذف البيانات باستخدام واجهة سطر الأوامر في Firebase
يمكنك أيضًا استخدام واجهة سطر الأوامر في Firebase لحذف المستندات والمجموعات. استخدِم الأمر التالي لحذف البيانات:
firebase firestore:delete [options] <<path>>
حذف البيانات باستخدام وحدة التحكّم
يمكنك حذف المستندات والمجموعات من صفحة Cloud Firestore في وحدة التحكّم. يؤدي حذف مستند من وحدة التحكم إلى حذف جميع البيانات المتداخلة في هذا المستند، بما في ذلك أي مجموعات فرعية.
حذف البيانات باستخدام سياسات مدة البقاء (TTL)
تعين سياسة TTL حقلاً معينًا على أنه وقت انتهاء صلاحية المستندات الموجودة في مجموعة مجموعات معينة. يتم احتساب عمليات حذف مدة البقاء (TTL) ضمن تكاليف حذف المستندات.
للحصول على معلومات عن إعداد مدة البقاء، يمكنك الاطّلاع على إدارة الاحتفاظ بالبيانات باستخدام سياسات مدة البقاء.
لمزيد من المعلومات حول رموز الأخطاء وكيفية حل مشاكل وقت الاستجابة عند حذف البيانات، يمكنك الاطّلاع على صفحة تحديد المشاكل وحلّها.
حذف البيانات باستخدام Dataflow
Dataflow هي أداة رائعة للعمليات المجمّعة على قاعدة بيانات Firestore. يحتوي موصل Firestore لـ منشور مدونة مقدمة Dataflow على مثال لحذف جميع المستندات في مجموعة مجموعات.