বর্ণনা
পূর্ববর্তী পর্যায়ে তৈরি করা নথিগুলিতে নতুন ফিল্ড যোগ করুন।
তৈরি হওয়া ডকুমেন্টগুলোতে পূর্ববর্তী ধাপের সমস্ত ফিল্ডের সাথে নতুন যোগ করা সমস্ত ফিল্ডও থাকবে এবং পূর্ববর্তী ডকুমেন্টের একই নামের যেকোনো ফিল্ড ওভাররাইট হয়ে যাবে। add_fields(...) ধাপে একটি নেস্টেড ফিল্ডের নামকে অ্যালিয়াস হিসেবে উল্লেখ করে নেস্টেড ফিল্ড আপডেট করা যায়।
উদাহরণ
Web
const result = await execute(db.pipeline() .collection("books") .select(field("soldBooks").add(field("unsoldBooks")).as("totalBooks")) );
সুইফট
let result = try await db.pipeline() .collection("books") .select([Field("soldBooks").add(Field("unsoldBooks")).as("totalBooks")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(Expression.add(field("soldBooks"), field("unsoldBooks")).alias("totalBooks")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(Expression.add(field("soldBooks"), field("unsoldBooks")).alias("totalBooks")) .execute();
পাইথন
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("soldBooks").add(Field.of("unsoldBooks")).as_("totalBooks")) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(add(field("soldBooks"), field("unsoldBooks")).as("totalBooks")) .execute() .get();
আচরণ
ওভারল্যাপিং ক্ষেত্র
কোনো এক্সপ্রেশনকে এমন একটি অ্যালিয়াস (alias) দিলে যা পূর্ববর্তী ধাপের ডকুমেন্টগুলোতে আগে থেকেই আছে, তাহলে add_fields(...) ধাপটি পূর্ববর্তী ফিল্ডটিকে ওভাররাইট করে দেবে। একই ফিল্ড নামের উপর একাধিক এক্সপ্রেশনকে শৃঙ্খলিত করতে এটি ব্যবহার করা যেতে পারে, যেমন:
নোড.জেএস
const results = await db.pipeline()
.collection("/users")
.addFields(field('age').abs().as('age'))
.addFields(field('age').add(10).as('age'))
.execute();
নেস্টেড ফিল্ডস
নেস্টেড ফিল্ড (যেমন . সিনট্যাক্সযুক্ত ফিল্ড) এই পর্যায়ের অংশ হিসেবে আপডেট করা যেতে পারে। এর ফলে একটি ফিল্ডকে "ইন-প্লেস" আপডেট করা সম্ভব হয়, যেমন:
নোড.জেএস
const results = await db.pipeline()
.collection("/users")
.addFields(field('address.city').toLower().as('address.city'))
.execute();
কোনো নেস্টেড ফিল্ডে এক্সপ্রেশন অ্যাসাইন করলে, তা স্বয়ংক্রিয়ভাবে অনুপস্থিত প্যারেন্ট ফিল্ডগুলোও তৈরি করে দেবে।