Tambahkan kolom

Deskripsi

Menambahkan kolom baru ke dokumen yang dihasilkan oleh tahap sebelumnya.

Dokumen yang dibuat akan berisi semua kolom dari tahap sebelumnya beserta semua kolom yang baru ditambahkan, dengan mengganti kolom yang memiliki nama yang sama dari dokumen sebelumnya.

Sintaksis

Node.js

const results = await db.pipeline()
  .collection("/users")
  .addFields(field('first_name').concat(' ', field('last_name')).as('full_name'))
  .execute();

Contoh klien

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();

Perilaku

Kolom yang Tumpang Tindih

Jika Anda memberi alias pada ekspresi yang sudah ada dalam dokumen dari tahap sebelumnya, tahap add_fields(...) akan menimpa kolom sebelumnya.

Hal ini dapat digunakan untuk menggabungkan beberapa ekspresi pada nama kolom yang sama, seperti:

Node.js

const results = await db.pipeline()
  .collection("/users")
  .addFields(field('age').abs().as('age'))
  .addFields(field('age').add(10).as('age'))
  .execute();

Kolom Bertingkat

Meskipun alias yang ditetapkan ke kolom yang baru ditambahkan dapat berisi karakter khusus seperti ., kolom ini diperlakukan sebagai kolom tingkat teratas. Contoh:

Node.js

const results = await db.pipeline()
  .collection("/users")
  .addFields(field('address.city').toLower().as('address.city'))
  .execute();

menambahkan kolom tingkat teratas baru address.city, bukan menggabungkan hasil ekspresi kembali ke peta bertingkat di address.