הוספת שדות

תיאור

מוסיפים שדות חדשים למסמכים שנוצרו בשלב הקודם.

המסמכים שייווצרו יכללו את כל השדות מהשלב הקודם, וגם את כל השדות החדשים שנוספו. אם יש שדות עם אותו שם כמו במסמך הקודם, הם יימחקו ויוחלפו בשדות החדשים. השלב 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();
    
Python
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()
)
Java
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();

הקצאת ביטוי לשדה מקונן תיצור באופן מרומז גם שדות אב חסרים.