فیلدها را اضافه کنید

توضیحات

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

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

رفتار

فیلدهای همپوشانی

اختصاص دادن یک نام مستعار به یک عبارت که از قبل در اسناد مرحله قبل وجود دارد، باعث می‌شود مرحله 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();

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