Beschreibung
Gibt alle Dokumente aus einer beliebigen Sammlung mit der angegebenen Sammlungs-ID zurück, unabhängig von der übergeordneten Sammlung.
Beispiele
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)
Verhalten
Damit Sie die Phase collection_group(...) verwenden können, muss sie als erste Phase in der Pipeline angezeigt werden.
Die Reihenfolge der Dokumente, die in der collection_group(...)-Phase zurückgegeben werden, ist instabil und kann nicht als zuverlässig angesehen werden. Cloud Firestore versucht, die Abfrage so effizient wie möglich auszuführen. Die Reihenfolge kann sich je nach Schema oder Indexkonfiguration ändern. In einer nachfolgenden sort(...)-Phase kann eine deterministische Reihenfolge erzielt werden.
Beispiel:
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});
Mit der Phase collection_group(...) können Dokumente aus jeder Sammlung von Abteilungen in allen übergeordneten Sammlungen in der Datenbank zurückgegeben werden.
Node.js
const results = await db.pipeline()
.collectionGroup("departments")
.sort(field("employees").ascending())
.execute();
Mit dieser Abfrage werden die folgenden Dokumente erstellt:
{ name: "SF Building Deparment", employees: 750 }
{ name: "CHI Building Deparment", employees: 900 }
{ name: "NY Building Deparment", employees: 1000 }
{ name: "NY Finance Deparment", employees: 1200 }