फ़ील्ड जोड़ें

ब्यौरा

पिछली स्टेज में बने दस्तावेज़ों में नए फ़ील्ड जोड़ना.

जनरेट किए गए दस्तावेज़ों में, पिछली स्टेज के सभी फ़ील्ड के साथ-साथ, नए जोड़े गए सभी फ़ील्ड शामिल होंगे. साथ ही, पिछली स्टेज के दस्तावेज़ में मौजूद, एक ही नाम वाले फ़ील्ड को ओवरराइट किया जाएगा. 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();

किसी नेस्ट किए गए फ़ील्ड को कोई एक्सप्रेशन असाइन करने पर, पैरंट के तौर पर काम करने वाले ऐसे फ़ील्ड भी बन जाएंगे जो पहले से मौजूद नहीं हैं.