ब्यौरा
यह फ़ंक्शन, पहले से तय किए गए दस्तावेज़ों के सेट को खोजकर, दस्तावेज़ों को दिखाता है.
स्टेज में एक या उससे ज़्यादा दस्तावेज़ों को इनपुट के तौर पर इस्तेमाल किया जाना चाहिए. साथ ही, इसमें डुप्लीकेट पाथ वाले दस्तावेज़ नहीं होने चाहिए. अगर रेफ़र किया गया कोई दस्तावेज़ मौजूद नहीं है, तो उस दस्तावेज़ के पाथ के लिए कोई नतीजा नहीं मिलेगा.
यह स्टेज, Cloud Firestore के batchGet की तरह काम करता है. इससे बैच ऑपरेशन के बाद फ़िल्टर करने के चरणों को पूरा करने के बजाय, सीधे तौर पर नतीजों को फ़िल्टर किया जा सकता है.
उदाहरण
Web
const results = await execute(db.pipeline() .documents([ doc(db, "cities", "SF"), doc(db, "cities", "DC"), doc(db, "cities", "NY") ]) );
Swift
let results = try await db.pipeline() .documents([ db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ]).execute()
Kotlin
val results = db.pipeline() .documents( db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ).execute()
Java
Task<Pipeline.Snapshot> results = db.pipeline() .documents( db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ).execute();
Python
results = ( client.pipeline() .documents( client.collection("cities").document("SF"), client.collection("cities").document("DC"), client.collection("cities").document("NY"), ) .execute() )
Java
Pipeline.Snapshot results = firestore .pipeline() .documents( firestore.collection("cities").document("SF"), firestore.collection("cities").document("DC"), firestore.collection("cities").document("NY")) .execute() .get();
जाएं
snapshot := client.Pipeline(). Documents([]*firestore.DocumentRef{ client.Collection("cities").Doc("SF"), client.Collection("cities").Doc("DC"), client.Collection("cities").Doc("NY"), }). Execute(ctx)
व्यवहार
documents(...) स्टेज का इस्तेमाल करने के लिए, यह ज़रूरी है कि यह पाइपलाइन में पहले स्टेज के तौर पर दिखे.
documents(...) स्टेज से मिले दस्तावेज़ों का क्रम बदलता रहता है. इसलिए, इस पर भरोसा नहीं किया जा सकता. डिटरमिनिस्टिक ऑर्डरिंग पाने के लिए, बाद के sort(...) स्टेज का इस्तेमाल किया जा सकता है.
उदाहरण के लिए, इन दस्तावेज़ों के लिए:
Node.js
await db.collection("cities").doc("SF").set({name: "San Francsico", state: "California"});
await db.collection("cities").doc("NYC").set({name: "New York City", state: "New York"});
await db.collection("cities").doc("CHI").set({name: "Chicago", state: "Illinois"});
documents(...) स्टेज का इस्तेमाल सिर्फ़ SF और NYC दस्तावेज़ों को वापस पाने के लिए किया जा सकता है. इसके बाद, उन्हें नाम के हिसाब से बढ़ते क्रम में लगाया जा सकता है.
Node.js
const results = await db.pipeline()
.documents(
db.collection("cities").doc("SF"),
db.collection("cities").doc("NYC"))
.sort(field("name").ascending())
.execute();
इस क्वेरी से ये दस्तावेज़ मिलते हैं:
{ name: "New York City", state: "New York" }
{ name: "San Francsico", state: "California" }