Alan ekle

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.