المجموعة

الوصف

تعرض هذه الطريقة جميع المستندات من مجموعة معيّنة. يمكن أن تكون المجموعة متداخلة.

البنية

Node.js

const results = await db.pipeline()
  .collection('/cities/SF/departments')
  .execute();

أمثلة على العملاء

Web

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

Kotlin

val results = db.pipeline()
    .collection("users/bob/games")
    .sort(field("name").ascending())
    .execute()

Java

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

results = (
    client.pipeline()
    .collection("users/bob/games")
    .sort(Field.of("name").ascending())
    .execute()
)
Java
Pipeline.Snapshot results =
    firestore
        .pipeline()
        .collection("users/bob/games")
        .sort(ascending(field("name")))
        .execute()
        .get();

السلوك

لاستخدام المرحلة collection، يجب أن تظهر كالمرحلة الأولى في مسار التسويق.

إنّ ترتيب المستندات التي يتم عرضها في المرحلة collection غير ثابت ولا يجب الاعتماد عليه. يمكن استخدام مرحلة ترتيب لاحقة للحصول على ترتيب حتمي.

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

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'});
await db.collection('states').doc('CA').set({name: 'California'});

يمكن استخدام المرحلة collection لاسترداد جميع المدن في المجموعة cities ثم ترتيبها بترتيب تصاعدي حسب الاسم.

Node.js

const results = await db.pipeline()
  .collection('/cities')
  .sort(field('name').ascending())
  .execute();

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

  {name: 'Chicago', state: 'Illinois'}
  {name: 'New York City', state: 'New York'}
  {name: 'San Francisco', state: 'California'}

المجموعات الفرعية

يمكن أيضًا استخدام مرحلة collection لاستهداف مجموعات ضمن عنصر رئيسي محدّد من خلال تقديم المسار الكامل إلى المرحلة.

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

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});

في هذا المثال، نريد فقط الأقسام في مدينة نيويورك.

Node.js

const results = await db.pipeline()
  .collection('/cities/NY/departments')
  .sort(field('employees').ascending())
  .execute();

سيؤدي ذلك إلى عرض جميع الأقسام ضمن المسار الكامل cities/NY/departments.

  {name: 'NY Building Deparment', employees: 1000}
  {name: 'NY Finance Deparment', employees: 1200}