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