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.