Açıklama
Önceki aşamada üretilen belgelere yeni alanlar ekleyin.
Oluşturulan belgeler, önceki aşamadaki tüm alanların yanı sıra yeni eklenen tüm alanları içerir. Aynı ada sahip olan alanlar, önceki belgedeki alanların üzerine yazılır. add_fields(...) aşaması, iç içe yerleştirilmiş alan adını takma ad olarak belirterek iç içe yerleştirilmiş alanların güncellenmesine olanak tanır.
Örnekler
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();
Go
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Add(firestore.FieldOf("soldBooks"), firestore.FieldOf("unsoldBooks")).As("totalBooks"), )). Execute(ctx)
Davranış
Çakışan Alanlar
Bir ifadeye, önceki aşamadaki dokümanlarda zaten bulunan bir takma ad atamak, add_fields(...) aşamasının önceki alanı geçersiz kılmasına neden olur. Bu, aynı alan adında birden fazla ifadeyi zincirlemek için kullanılabilir. Örneğin:
Node.js
const results = await db.pipeline()
.collection("/users")
.addFields(field('age').abs().as('age'))
.addFields(field('age').add(10).as('age'))
.execute();
İç İçe Yerleştirilmiş Alanlar
İç içe yerleştirilmiş alanlar (ör. . söz dizimine sahip olanlar) bu aşamada güncellenebilir. Bu sayede, aşağıdakiler gibi alanları "yerinde" güncellemek mümkün olur:
Node.js
const results = await db.pipeline()
.collection("/users")
.addFields(field('address.city').toLower().as('address.city'))
.execute();
İç içe yerleştirilmiş bir alana ifade atandığında, eksik üst alanlar da dolaylı olarak oluşturulur.