Description
Renvoie tous les documents de n'importe quelle collection avec l'ID de collection spécifié, quel que soit son parent.
Exemples
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)
Comportement
Pour utiliser l'étape collection_group(...), elle doit apparaître comme la première étape du pipeline.
L'ordre des documents renvoyés par l'étape collection_group(...) est instable et ne peut pas être utilisé. Cloud Firestore tentera d'
exécuter la requête de la manière la plus efficace possible, ce qui peut modifier l'ordre
en fonction de la configuration du schéma ou de l'index. Une étape ultérieure
sort(...) peut être utilisée pour obtenir un ordre déterministe.
Par exemple, pour les documents suivants :
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});
L'étape collection_group(...) peut être utilisée pour renvoyer des documents de chaque collection de services dans toutes les collections parentes de la base de données.
Node.js
const results = await db.pipeline()
.collectionGroup("departments")
.sort(field("employees").ascending())
.execute();
Cette requête génère les documents suivants :
{ name: "SF Building Deparment", employees: 750 }
{ name: "CHI Building Deparment", employees: 900 }
{ name: "NY Building Deparment", employees: 1000 }
{ name: "NY Finance Deparment", employees: 1200 }