المستندات

الوصف

تعرض هذه الدالة المستندات من خلال البحث عن مجموعة ثابتة من المستندات المحدّدة مسبقًا.

يجب أن تأخذ المرحلة مستندًا واحدًا أو أكثر كمدخلات، ويجب ألّا تحتوي على مستندات ذات مسارات مكرّرة. إذا لم يكن المستند المُشار إليه متوفّرًا، لن يتم عرض أي نتائج لمسار المستند هذا.

تتصرّف هذه المرحلة بشكل مشابه batchGet في Cloud Firestore، وتسمح بفلترة النتائج مباشرةً بدلاً من تنفيذ خطوات ما بعد الفلترة بعد عملية الدفعات.

أمثلة

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" }