คำอธิบาย
เพิ่มฟิลด์ใหม่ลงในเอกสารที่สร้างขึ้นในขั้นตอนก่อนหน้า
เอกสารที่สร้างขึ้นจะมีฟิลด์ทั้งหมดจากขั้นตอนก่อนหน้า
พร้อมกับฟิลด์ที่เพิ่มใหม่ทั้งหมด โดยจะเขียนทับฟิลด์ที่มีชื่อเดียวกัน
จากเอกสารก่อนหน้า ขั้นตอน add_fields(...) ช่วยให้อัปเดต
ฟิลด์ที่ซ้อนกันได้โดยการระบุชื่อฟิลด์ที่ซ้อนกันเป็นชื่อแทน
ตัวอย่าง
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();
พฤติกรรม
ฟิลด์ที่ทับซ้อนกัน
การกำหนดนามแฝงให้กับนิพจน์ที่มีอยู่ในเอกสารจาก
ระยะก่อนหน้าจะทำให้ระยะadd_fields(...)เขียนทับฟิลด์ก่อนหน้า
ซึ่งใช้เพื่อเชื่อมโยงนิพจน์หลายรายการในชื่อฟิลด์เดียวกันได้ เช่น
Node.js
const results = await db.pipeline()
.collection("/users")
.addFields(field('age').abs().as('age'))
.addFields(field('age').add(10).as('age'))
.execute();
ฟิลด์ที่ซ้อนกัน
คุณอัปเดตฟิลด์ที่ซ้อนกัน (เช่น ฟิลด์ที่มีไวยากรณ์ .) ได้ในขั้นตอนนี้
ซึ่งจะช่วยให้อัปเดตฟิลด์ "ในตำแหน่ง" ได้ เช่น ใน
Node.js
const results = await db.pipeline()
.collection("/users")
.addFields(field('address.city').toLower().as('address.city'))
.execute();
การกำหนดนิพจน์ให้กับฟิลด์ที่ซ้อนกันจะสร้างฟิลด์ระดับบนที่ขาดหายไปโดยนัยด้วย