إضافة حقول

الوصف

يمكنك إضافة حقول جديدة إلى المستندات التي تم إنتاجها في المرحلة السابقة.

ستحتوي المستندات التي تم إنشاؤها على جميع الحقول من المرحلة السابقة بالإضافة إلى جميع الحقول التي تمت إضافتها حديثًا، وسيتم استبدال أي حقل يحمل الاسم نفسه من المستند السابق. تتيح مرحلة 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();

السلوك

الحقول المتداخلة

سيؤدي تعيين اسم مستعار لتعبير موجود في المستندات من المرحلة السابقة إلى استبدال مرحلة 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();

سيؤدي تعيين تعبير لحقل مضمّن إلى إنشاء أي حقول رئيسية مفقودة ضمنيًا أيضًا.