شرح
فیلدهای جدیدی به اسناد تولیدشده در مرحله قبلی اضافه کنید.
سندهای تولیدشده شامل همه فیلدهای مرحله قبلی بههمراه همه فیلدهای جدیداً اضافهشده خواهد بود و هر فیلدی را که نام یکسانی با سند قبلی داشته باشد بازنویسی میکند. مرحله add_fields(...) امکان بهروزرسانی فیلدهای تودرتو را با مشخص کردن نام فیلد تودرتو بهعنوان نام مستعار فراهم میکند.
مثالها
Web
const result = await execute(db.pipeline() .collection("books") .select(field("soldBooks").add(field("unsoldBooks")).as("totalBooks")) );
Swift
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();
رفتن
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Add(firestore.FieldOf("soldBooks"), firestore.FieldOf("unsoldBooks")).As("totalBooks"), )). Execute(ctx)
رفتار
فیلدهای همپوشان
اختصاص دادن نام مستعار به عبارتی که ازقبل در اسناد مرحله قبلی وجود دارد باعث میشود مرحله add_fields(...) فیلد قبلی را رونویسی کند. از این میتوان برای زنجیر کردن چند عبارت روی یک نام فیلد یکسان استفاده کرد، مانند:
Node.js
const results = await db.pipeline()
.collection("/users")
.addFields(field('age').abs().as('age'))
.addFields(field('age').add(10).as('age'))
.execute();
فیلدهای تودرتو
فیلدهای تودرتو (مثلاً فیلدهایی با نحو .) میتوانند بهعنوان بخشی از این مرحله بهروز شوند. این کار بهروزرسانی فیلد «در محل» را ممکن میکند، مثلاً در:
Node.js
const results = await db.pipeline()
.collection("/users")
.addFields(field('address.city').toLower().as('address.city'))
.execute();
اختصاص دادن عبارت به فیلد تودرتو بهطور ضمنی هرگونه فیلد والد مفقود را نیز ایجاد میکند.