Koleksiyon grubu

Açıklama

Üst öğesinden bağımsız olarak, belirtilen koleksiyon kimliğine sahip herhangi bir koleksiyondaki tüm dokümanları döndürür.

Örnekler

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();
Go
snapshot := client.Pipeline().
	CollectionGroup("games").
	Sort(firestore.Orders(firestore.Ascending(firestore.FieldOf("name")))).
	Execute(ctx)

Davranış

collection_group(...) aşamasını kullanmak için bu aşamanın, ardışık düzendeki ilk aşama olarak görünmesi gerekir.

collection_group(...) aşamasından döndürülen belgelerin sırası kararsızdır ve güvenilemez. Cloud Firestore, sorguyu mümkün olan en verimli şekilde yürütmeye çalışır. Bu durum, şema veya dizin yapılandırmasına bağlı olarak sırayı değiştirebilir. Belirleyici bir sıralama elde etmek için sonraki sort(...) aşama kullanılabilir.

Örneğin, aşağıdaki belgeler için:

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(...) aşaması, veritabanındaki tüm üst koleksiyonlarda yer alan her bir departman koleksiyonundan doküman döndürmek için kullanılabilir.

Node.js

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

Bu sorgu aşağıdaki belgeleri oluşturur:

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