مجموعة المجموعات

الوصف

تعرض هذه الطريقة جميع المستندات من أي مجموعة تتضمّن رقم تعريف المجموعة المحدّد، بغض النظر عن العنصر الأصل.

أمثلة

Web

const results = await execute(db.pipeline()
  .collectionGroup("games")
  .sort(field("name").ascending())
  );
Swift
let results = try await db.pipeline()
  .collectionGroup("games")
  .sort([Field("name").ascending()])
  .execute()

Kotlin

val results = db.pipeline()
    .collectionGroup("games")
    .sort(field("name").ascending())
    .execute()

Java

      Task<Pipeline.Snapshot> results = db.pipeline()
    .collectionGroup("games")
    .sort(field("name").ascending())
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

results = (
    client.pipeline()
    .collection_group("games")
    .sort(Field.of("name").ascending())
    .execute()
)
Java
Pipeline.Snapshot results =
    firestore
        .pipeline()
        .collectionGroup("games")
        .sort(ascending(field("name")))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	CollectionGroup("games").
	Sort(firestore.Orders(firestore.Ascending(firestore.FieldOf("name")))).
	Execute(ctx)

السلوك

لاستخدام المرحلة collection_group(...)، يجب أن تظهر كالمرحلة الأولى في مسار المعالجة.

إنّ ترتيب المستندات التي يتم عرضها في المرحلة collection_group(...) غير ثابت ولا يمكن الاعتماد عليه. سيحاول Cloud Firestore تنفيذ طلب البحث بأكثر طريقة فعالة ممكنة، ما قد يؤدي إلى تغيير الترتيب حسب مخطط قاعدة البيانات أو إعدادات الفهرس. يمكن استخدام مرحلة sort(...) لاحقة للحصول على ترتيب تحديدي.

على سبيل المثال، بالنسبة إلى المستندات التالية:

Node.js

await db.collection("cities/SF/departments").doc("building").set({name: "SF Building Deparment", employees: 750});
await db.collection("cities/NY/departments").doc("building").set({name: "NY Building Deparment", employees: 1000});
await db.collection("cities/CHI/departments").doc("building").set({name: "CHI Building Deparment", employees: 900});
await db.collection("cities/NY/departments").doc("finance").set({name: "NY Finance Deparment", employees: 1200});

يمكن استخدام المرحلة collection_group(...) لعرض مستندات من كل مجموعة أقسام في جميع المجموعات الرئيسية في قاعدة البيانات.

Node.js

const results = await db.pipeline()
  .collectionGroup("departments")
  .sort(field("employees").ascending())
  .execute();

ينتج عن طلب البحث هذا المستندات التالية:

  { name: "SF Building Deparment", employees: 750 }
  { name: "CHI Building Deparment", employees: 900 }
  { name: "NY Building Deparment", employees: 1000 }
  { name: "NY Finance Deparment", employees: 1200 }