اسناد

توضیحات

با جستجوی مجموعه‌ای ثابت از اسناد از پیش تعریف‌شده، اسناد را برمی‌گرداند.

این مرحله باید یک یا چند سند را به عنوان ورودی دریافت کند و نمی‌تواند شامل اسنادی با مسیرهای تکراری باشد. اگر سند ارجاع‌شده وجود نداشته باشد، هیچ نتیجه‌ای برای آن مسیر سند تولید نخواهد شد.

این مرحله مشابه batchGet در Cloud Firestore عمل می‌کند و به جای انجام مراحل پس از فیلتر کردن پس از عملیات دسته‌ای، امکان فیلتر کردن مستقیم نتایج را فراهم می‌کند.

مثال‌ها

Web

const results = await execute(db.pipeline()
  .documents([
    doc(db, "cities", "SF"),
    doc(db, "cities", "DC"),
    doc(db, "cities", "NY")
  ])
);
سویفت
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();
    
پایتون
results = (
    client.pipeline()
    .documents(
        client.collection("cities").document("SF"),
        client.collection("cities").document("DC"),
        client.collection("cities").document("NY"),
    )
    .execute()
)
جاوا
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(...) ، باید به عنوان اولین مرحله در pipeline ظاهر شود.

ترتیب اسناد برگردانده شده از مرحله documents(...) ناپایدار است و نمی‌توان به آن اعتماد کرد. می‌توان از مرحله sort(...) بعدی برای به دست آوردن یک ترتیب قطعی استفاده کرد.

به عنوان مثال، برای اسناد زیر:

نود جی اس

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 و سپس مرتب‌سازی آنها به ترتیب صعودی نام استفاده شود.

نود جی اس

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