update(...) পর্যায়টি বিদ্যমান ডকুমেন্টগুলো আপডেট করে।
উদাহরণ
উদাহরণস্বরূপ, নিম্নলিখিত অপারেশনটি একটি কালেকশন গ্রুপের সমস্ত ডকুমেন্টে ডেটা মডেলের পরিবর্তন ব্যাকফিল করে। এই পাইপলাইনটি users কালেকশন গ্রুপের সেই সমস্ত ডকুমেন্টে একটি preferences.color ফিল্ড যোগ করে, যেগুলিতে সেই ফিল্ডটি নেই।
নোড.জেএস
const snapshot = await db.pipeline() .collectionGroup("users") .where(not(exists(field("preferences.color")))) .addFields(constant(null).as("preferences.color")) .removeFields("color") .update() .execute();
পাইথন
from google.cloud.firestore_v1.pipeline_expressions import Constant, Field, Not snapshot = ( client.pipeline() .collection_group("users") .where(Not(Field.of("preferences.color").exists())) .add_fields(Constant.of(None).as_("preferences.color")) .remove_fields("color") .update() .execute() )
জাভা
Pipeline.Snapshot snapshot = firestore.pipeline() .collectionGroup("users") .where(not(exists(field("preferences.color")))) .addFields(constant((String) null).as("preferences.color")) .removeFields("color") .update() .execute().get();
যান
snapshot := client.Pipeline(). CollectionGroup("users"). Where(firestore.Not(firestore.FieldExists(firestore.FieldOf("preferences.color")))). AddFields(firestore.Selectables( firestore.ConstantOfNull().As("preferences.color"), )). RemoveFields(firestore.Fields("color")). Update(). Execute(ctx)
আচরণ
ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (DML)-এর সমস্ত পর্যায় অবশ্যই পাইপলাইনের শেষে থাকতে হবে।
কোন ডকুমেন্টগুলো আপডেট করতে হবে তা শনাক্ত করার জন্য, এই ধাপে আসা ডকুমেন্টগুলোতে অবশ্যই __name__ ফিল্ডটি অন্তর্ভুক্ত থাকতে হবে। যদি কোনো ডকুমেন্ট বিদ্যমান না থাকে, তাহলে অপারেশনটি ব্যর্থ হয়। বেশিরভাগ ইনপুট ধাপে (যেমন collection(...) , collection_group(...) , database(...) , এবং documents(...) ) ডিফল্টরূপে __name__ ফিল্ডটি অন্তর্ভুক্ত থাকে।
আপনি চাইলে ডকুমেন্টগুলো লেখার ঠিক আগে প্রয়োগ করার জন্য transformations প্রদান করতে পারেন। এগুলো চূড়ান্ত আউটপুট পর্যায়ের ঠিক আগে add_fields(...) যোগ করার মতোই কাজ করে এবং এক্সপ্রেশনগুলো পূর্ববর্তী ডকুমেন্টগুলোর প্রেক্ষাপটে চলে।
প্রতিক্রিয়াটিতে পরিবর্তিত ডকুমেন্টের সংখ্যার একটি সারসংক্ষেপ অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, নিম্নলিখিত প্রতিক্রিয়াটি নিশ্চিত করে যে পাইপলাইনটি তিনটি ডকুমেন্ট পরিবর্তন করেছে:
{documents_modified: 3L}
সীমাবদ্ধতা
DML পর্যায়গুলো Cloud Firestore Security Rules সমর্থন করে না। Cloud Firestore Security Rules মাধ্যমে DML অপারেশনের প্রচেষ্টা প্রত্যাখ্যান করা হয়।
এই ফিচারটির প্রিভিউ চলাকালীন, আপনি কোনো ট্রানজ্যাকশনের মধ্যে DML স্টেজগুলো চালাতে পারবেন না। কনসিস্টেন্সি আচরণ সম্পর্কে আরও তথ্যের জন্য কনসিস্টেন্সি দেখুন।
যদি DML ধাপের পূর্ববর্তী ধাপে একই
__name__সহ একাধিক ডকুমেন্ট তৈরি হয়, তবে প্রতিটি ইনস্ট্যান্স প্রসেস করা হয়।update(...)এর ক্ষেত্রে, এর অর্থ হলো একই টার্গেট ডকুমেন্ট একাধিকবার পরিবর্তিত হতে পারে।delete(...)এর ক্ষেত্রে, প্রথমটির পরের প্রচেষ্টাগুলো নিষ্ক্রিয় থাকবে।