ब्यौरा
यह फ़ंक्शन, किसी दूसरी पाइपलाइन के दस्तावेज़ों को मौजूदा पाइपलाइन के दस्तावेज़ों के साथ मर्ज करता है.
उदाहरण
Node.js
const results = await db.pipeline() .collection("cities/SF/restaurants") .where(eq("type", "chinese")) .union(db.pipeline() .collection("cities/NYC/restaurants") .where(eq("type", "italian"))) .where(gte("rating", 4.5)) .execute();
Web
const results = await execute(db.pipeline() .collection("cities/SF/restaurants") .where(field("type").equal("Chinese")) .union(db.pipeline() .collection("cities/NY/restaurants") .where(field("type").equal("Italian"))) .where(field("rating").greaterThanOrEqual(4.5)) .sort(field("__name__").descending()) );
Swift
let results = try await db.pipeline() .collection("cities/SF/restaurants") .where(Field("type").equal("Chinese")) .union(with: db.pipeline() .collection("cities/NY/restaurants") .where(Field("type").equal("Italian"))) .where(Field("rating").greaterThanOrEqual(4.5)) .sort([Field("__name__").descending()]) .execute()
Kotlin
val results = db.pipeline() .collection("cities/SF/restaurants") .where(field("type").equal("Chinese")) .union(db.pipeline() .collection("cities/NY/restaurants") .where(field("type").equal("Italian"))) .where(field("rating").greaterThanOrEqual(4.5)) .sort(field("__name__").descending()) .execute()
Java
Task<Pipeline.Snapshot> results = db.pipeline() .collection("cities/SF/restaurants") .where(field("type").equal("Chinese")) .union(db.pipeline() .collection("cities/NY/restaurants") .where(field("type").equal("Italian"))) .where(field("rating").greaterThanOrEqual(4.5)) .sort(field("__name__").descending()) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field results = ( client.pipeline() .collection("cities/SF/restaurants") .where(Field.of("type").equal("Chinese")) .union( client.pipeline() .collection("cities/NY/restaurants") .where(Field.of("type").equal("Italian")) ) .where(Field.of("rating").greater_than_or_equal(4.5)) .sort(Field.of("__name__").descending()) .execute() )
Java
Pipeline.Snapshot results = firestore .pipeline() .collection("cities/SF/restaurants") .where(field("type").equal("Chinese")) .union( firestore .pipeline() .collection("cities/NY/restaurants") .where(field("type").equal("Italian"))) .where(field("rating").greaterThanOrEqual(4.5)) .sort(descending(field("__name__"))) .execute() .get();
जाएं
snapshot := client.Pipeline(). Collection("cities/SF/restaurants"). Where(firestore.FieldOf("type").Equal("Chinese")). Union( client.Pipeline(). Collection("cities/NY/restaurants"). Where(firestore.FieldOf("type").Equal("Italian")), ). Where(firestore.FieldOf("rating").GreaterThanOrEqual(4.5)). Sort(firestore.Orders(firestore.Descending(firestore.FieldOf("__name__")))). Execute(ctx)
व्यवहार
इस स्टेज में, कई पाइपलाइन एक साथ चलती हैं और उनके नतीजों को एक साथ जोड़ दिया जाता है.
नतीजों का क्रम तय न होना
दोनों पाइपलाइन के नतीजों को जिस क्रम में जोड़ा जाता है वह तय नहीं होता. किसी भी क्रम को स्थिर नहीं माना जाता है. इसलिए, इस पर भरोसा नहीं किया जाना चाहिए.
अगर स्टेबल ऑर्डर की ज़रूरत है, तो sort(...) स्टेज को जोड़ा जा सकता है.
Node.js
const results = await db.pipeline() .collection("cities/SF/restaurants") .where(eq("type", "chinese")) .union(db.pipeline() .collection("cities/NYC/restaurants") .where(eq("type", "italian"))) .where(gte("rating", 4.5)) .sort(Field.of("__name__")) .execute();
Kotlin
val results = db.pipeline() .collection("cities/SF/restaurants") .where(field("type").equal("Chinese")) .union(db.pipeline() .collection("cities/NY/restaurants") .where(field("type").equal("Italian"))) .where(field("rating").greaterThanOrEqual(4.5)) .sort(field("__name__").descending()) .execute()
Java
Task<Pipeline.Snapshot> results = db.pipeline() .collection("cities/SF/restaurants") .where(field("type").equal("Chinese")) .union(db.pipeline() .collection("cities/NY/restaurants") .where(field("type").equal("Italian"))) .where(field("rating").greaterThanOrEqual(4.5)) .sort(field("__name__").descending()) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field results = ( client.pipeline() .collection("cities/SF/restaurants") .where(Field.of("type").equal("Chinese")) .union( client.pipeline() .collection("cities/NY/restaurants") .where(Field.of("type").equal("Italian")) ) .where(Field.of("rating").greater_than_or_equal(4.5)) .sort(Field.of("__name__").descending()) .execute() )
Java
Pipeline.Snapshot results = firestore .pipeline() .collection("cities/SF/restaurants") .where(field("type").equal("Chinese")) .union( firestore .pipeline() .collection("cities/NY/restaurants") .where(field("type").equal("Italian"))) .where(field("rating").greaterThanOrEqual(4.5)) .sort(descending(field("__name__"))) .execute() .get();
जाएं
snapshot := client.Pipeline(). Collection("cities/SF/restaurants"). Where(firestore.FieldOf("type").Equal("Chinese")). Union( client.Pipeline(). Collection("cities/NY/restaurants"). Where(firestore.FieldOf("type").Equal("Italian")), ). Where(firestore.FieldOf("rating").GreaterThanOrEqual(4.5)). Sort(firestore.Orders(firestore.Descending(firestore.FieldOf("__name__")))). Execute(ctx)
डुप्लीकेट नतीजे
union(...) स्टेज में, डुप्लीकेट नतीजों को नहीं हटाया जाता. डुप्लीकेट नतीजे हटाने के लिए, distinct(...) या aggregate(...) स्टेज जोड़ा जा सकता है.