Açıklama
Önceki aşamada oluşturulan belgelere yeni alanlar ekleyin.
Oluşturulan dokümanlar, önceki aşamadaki tüm alanların yanı sıra yeni eklenen tüm alanları içerir. Aynı ada sahip olan tüm alanlar önceki dokümandaki alanların üzerine yazılır. add_fields(...) aşaması, iç içe geçmiş alan adını takma ad olarak belirterek iç içe geçmiş 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();
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 geçmiş 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.