নিম্নলিখিত উদাহরণগুলিতে ডকুমেন্ট, ফিল্ড এবং কালেকশন ডিলিট করার পদ্ধতি দেখানো হয়েছে।
নথি মুছে ফেলুন
একটি ডকুমেন্ট মুছে ফেলার জন্য, নিম্নলিখিত ভাষা-নির্দিষ্ট 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); });
সুইফট
delete() মেথডটি ব্যবহার করুন:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
উদ্দেশ্য-সি
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() মেথডটি ব্যবহার করুন:
সি++
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; } });
নোড.জেএস
delete() মেথডটি ব্যবহার করুন:
যান
Delete() মেথডটি ব্যবহার করুন:
পিএইচপি
delete() মেথডটি ব্যবহার করুন:
ঐক্য
DeleteAsync() মেথডটি ব্যবহার করুন:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
সি#
DeleteAsync() মেথডটি ব্যবহার করুন:
রুবি
delete() মেথডটি ব্যবহার করুন:
আপনি যখন কোনো ডকুমেন্ট ডিলিট করেন, তখন Cloud Firestore স্বয়ংক্রিয়ভাবে তার সাব-কালেকশনগুলোর ভেতরের ডকুমেন্টগুলো ডিলিট করে না। আপনি রেফারেন্সের মাধ্যমে সাব-কালেকশনের ডকুমেন্টগুলো অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, আপনি /mycoll/mydoc পাথের প্যারেন্ট ডকুমেন্টটি ডিলিট করে দিলেও, /mycoll/mydoc /mycoll/mydoc/mysubcoll/mysubdoc পাথের ডকুমেন্টটি অ্যাক্সেস করতে পারবেন।
অস্তিত্বহীন প্যারেন্ট ডকুমেন্টগুলো কনসোলে দেখা যায় , কিন্তু সেগুলো কোয়েরির ফলাফল এবং স্ন্যাপশটে দেখা যায় না।
আপনি যদি কোনো একটি ডকুমেন্ট এবং তার অন্তর্ভুক্ত সমস্ত সাব-কালেকশন মুছে ফেলতে চান, তবে আপনাকে তা ম্যানুয়ালি করতে হবে। আরও তথ্যের জন্য, ‘কালেকশন মুছুন’ দেখুন।
ক্ষেত্রগুলি মুছুন
কোনো ডকুমেন্ট আপডেট করার সময়, ডকুমেন্ট থেকে নির্দিষ্ট ফিল্ড মুছে ফেলার জন্য নিম্নলিখিত ভাষা-নির্দিষ্ট 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() });
সুইফট
FieldValue.delete() মেথডটি ব্যবহার করুন:
do { try await db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
উদ্দেশ্য-সি
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 মেথডটি ব্যবহার করুন:
সি++
FieldValue::Delete() মেথডটি ব্যবহার করুন:
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
নোড.জেএস
FieldValue.delete() মেথডটি ব্যবহার করুন:
যান
firestore.Delete মেথডটি ব্যবহার করুন:
পিএইচপি
FieldValue::deleteField() পদ্ধতিটি ব্যবহার করুন:
ঐক্য
FieldValue.Delete মেথডটি ব্যবহার করুন:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
সি#
FieldValue.Delete মেথডটি ব্যবহার করুন:
রুবি
firestore.field_delete পদ্ধতিটি ব্যবহার করুন:
সংগ্রহগুলি মুছুন
Cloud Firestore একটি সম্পূর্ণ কালেকশন বা সাব-কালেকশন ডিলিট করতে, কালেকশন বা সাব-কালেকশনের মধ্যে থাকা সমস্ত ডকুমেন্ট পুনরুদ্ধার (রিড) করুন এবং সেগুলো ডিলিট করে দিন। এই প্রক্রিয়ায় রিড এবং ডিলিট উভয় খরচই হয়। আপনার যদি বড় কালেকশন থাকে, তাহলে মেমোরি-সংক্রান্ত ত্রুটি এড়াতে আপনি ডকুমেন্টগুলো ছোট ছোট ব্যাচে ডিলিট করতে পারেন। সম্পূর্ণ কালেকশন বা সাব-কালেকশনটি ডিলিট না হওয়া পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি করুন।
একটি কালেকশন ডিলিট করার জন্য অগণিত স্বতন্ত্র ডিলিট রিকোয়েস্ট সমন্বয় করতে হয়। যদি আপনাকে সম্পূর্ণ কালেকশন ডিলিট করতে হয়, তবে তা শুধুমাত্র একটি বিশ্বস্ত সার্ভার পরিবেশ থেকে করুন। যদিও মোবাইল/ওয়েব ক্লায়েন্ট থেকে একটি কালেকশন ডিলিট করা সম্ভব, তবে এমনটা করলে নিরাপত্তা এবং পারফরম্যান্সের উপর নেতিবাচক প্রভাব পড়ে।
স্পষ্টতার জন্য নিম্নলিখিত কোড স্নিপেটগুলো সরলীকৃত করা হয়েছে এবং এতে ত্রুটি পরিচালনা, নিরাপত্তা, সাব-কালেকশন মুছে ফেলা বা পারফরম্যান্স অপ্টিমাইজেশন অন্তর্ভুক্ত নেই। প্রোডাকশনে কালেকশন মুছে ফেলার একটি প্রস্তাবিত পদ্ধতি সম্পর্কে আরও জানতে, ‘কালেকশন এবং সাব-কালেকশন মুছে ফেলা’ দেখুন।
ওয়েব
// Deleting collections from a Web client is not recommended.সুইফট
// Deleting collections from an Apple client is not recommended.উদ্দেশ্য-সি
// 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
সি++
// This is not supported. Delete data using CLI as discussed below.
নোড.জেএস
যান
পিএইচপি
ঐক্য
// This is not supported. Delete data using CLI as discussed below.সি#
রুবি
TTL পলিসি ব্যবহার করে ডেটা মুছুন
একটি TTL পলিসি কোনো নির্দিষ্ট কালেকশন গ্রুপের ডকুমেন্টগুলোর জন্য একটি নির্দিষ্ট ফিল্ডকে মেয়াদোত্তীর্ণের সময় হিসেবে নির্ধারণ করে। TTL ডিলিট অপারেশনগুলো আপনার ডকুমেন্ট ডিলিট খরচের অন্তর্ভুক্ত হয়।
TTL নির্ধারণ করার বিষয়ে তথ্যের জন্য, “TTL পলিসি ব্যবহার করে ডেটা রিটেনশন পরিচালনা করুন” দেখুন।
বাল্ক ডিলিট জব
Cloud Firestore একসাথে অনেক ডকুমেন্ট মুছে ফেলার জন্য বিভিন্ন টুল সমর্থন করে। আপনাকে কতগুলো ডকুমেন্ট মুছতে হবে এবং আপনার কী পরিমাণ কনফিগার করার সুবিধা প্রয়োজন, তার উপর ভিত্তি করে আপনার একটি টুল নির্বাচন করা উচিত।
হাজার হাজার ডকুমেন্টের মতো ছোট কাজের জন্য কনসোল বা ফায়ারবেস সিএলআই (Firebase CLI) ব্যবহার করুন। বড় কাজের ক্ষেত্রে, এই টুলগুলো টাইমআউট হয়ে যেতে পারে এবং আপনাকে টুলটি একাধিকবার চালাতে হতে পারে।
কনসোল
আপনি কনসোলের Cloud Firestore পৃষ্ঠা থেকে ডকুমেন্ট এবং কালেকশন মুছে ফেলতে পারেন। কনসোল থেকে কোনো ডকুমেন্ট মুছে ফেললে, সেই ডকুমেন্টের ভেতরের সমস্ত নেস্টেড ডেটা, যার মধ্যে যেকোনো সাব-কালেকশনও অন্তর্ভুক্ত, মুছে যায়।
ফায়ারবেস সিএলআই
আপনি ফায়ারবেস সিএলআই (Firebase CLI) ব্যবহার করেও ডকুমেন্ট এবং কালেকশন ডিলিট করতে পারেন। ডেটা ডিলিট করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
firebase firestore:delete --database=DATABASE_ID PATH
DATABASE_ID জায়গায় আপনার ডাটাবেস আইডি এবং PATH জায়গায় কোনো ডকুমেন্ট বা কালেকশনের পাথ বসান।
বিপুল পরিমাণে নথি মুছে ফেলার কাজের জন্য (লক্ষ লক্ষ নথি), নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করুন:
পরিচালিত বাল্ক ডিলিট
Cloud Firestore এক বা একাধিক কালেকশন গ্রুপ একসাথে মুছে ফেলা সমর্থন করে। আরও তথ্যের জন্য, ‘একসাথে ডেটা মুছে ফেলা’ দেখুন।
ডেটাফ্লো সংযোগকারী
আপনি আপনার ডাটাবেসে বাল্ক অপারেশন করার জন্য ডেটাফ্লো ব্যবহার করতে পারেন। এই বিকল্পটি সবচেয়ে বেশি কনফিগারযোগ্য, তবে অন্যান্য বাল্ক ডিলিট বিকল্পের তুলনায় এর জন্য বেশি সেটআপের প্রয়োজন হয়। Cloud Firestore পরিচিতি ব্লগ পোস্টে একটি কালেকশন গ্রুপের সমস্ত ডকুমেন্ট ডিলিট করার একটি উদাহরণ রয়েছে।