الوصف
تعرض هذه الطريقة جميع المستندات من أي مجموعة تتضمّن رقم تعريف المجموعة المحدّد، بغض النظر عن العنصر الأصل.
أمثلة
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 }