Grup Koleksi (Tahap Input)

Deskripsi

Menampilkan semua dokumen dari koleksi mana pun dengan ID koleksi yang ditentukan terlepas dari induknya.

Contoh

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
Android
val results = db.pipeline()
    .collectionGroup("games")
    .sort(field("name").ascending())
    .execute()
Java
Android
      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();
Go
snapshot := client.Pipeline().
	CollectionGroup("games").
	Sort(firestore.Orders(firestore.Ascending(firestore.FieldOf("name")))).
	Execute(ctx)

Perilaku

Untuk menggunakan tahap collection_group(...), tahap ini harus muncul sebagai tahap pertama dalam pipeline.

Urutan dokumen yang ditampilkan dari tahap collection_group(...) tidak stabil dan tidak dapat diandalkan. Firestore akan mencoba menjalankan kueri dengan cara seefisien mungkin, yang dapat mengubah urutan bergantung pada konfigurasi skema atau indeks. Tahap berikutnya sort(...) dapat digunakan untuk mendapatkan pengurutan deterministik.

Misalnya, untuk dokumen berikut:

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

Tahap collection_group(...) dapat digunakan untuk menampilkan dokumen dari setiap koleksi departemen di semua koleksi induk dalam database.

Node.js

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

Kueri ini akan menghasilkan dokumen berikut:

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