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