افزودن فیلد

شرح

فیلدهای جدیدی به اسناد تولیدشده در مرحله قبلی اضافه کنید.

سندهای تولیدشده شامل همه فیلدهای مرحله قبلی به‌همراه همه فیلدهای جدیداً اضافه‌شده خواهد بود و هر فیلدی را که نام یکسانی با سند قبلی داشته باشد بازنویسی می‌کند. مرحله 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();

اختصاص دادن عبارت به فیلد تودرتو به‌طور ضمنی هرگونه فیلد والد مفقود را نیز ایجاد می‌کند.