Beschreibung
Gibt alle Dokumente aus einer bestimmten Sammlung zurück. Die Sammlung kann verschachtelt werden.
Beispiele
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();
Verhalten
Damit die Phase collection(...) verwendet werden kann, muss sie als erste Phase in der Pipeline (oder Unterpipeline) aufgeführt sein.
Die Reihenfolge der Dokumente, die in der collection(...)-Phase zurückgegeben werden, ist instabil und kann nicht als zuverlässig angesehen werden. Firestore versucht, die Abfrage so effizient wie möglich auszuführen. Die Reihenfolge kann sich je nach Schema oder Indexkonfiguration ändern. Mit einer nachfolgenden sort(...)-Phase kann eine deterministische Reihenfolge erreicht werden.
Beispiel:
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"});
In der Phase collection können alle Städte in der Sammlung cities abgerufen und dann in aufsteigender Reihenfolge nach Namen sortiert werden.
Node.js
const results = await db.pipeline()
.collection("/cities")
.sort(field("name").ascending())
.execute();
Mit dieser Abfrage werden die folgenden Dokumente erstellt:
{ name: "Chicago", state: "Illinois" }
{ name: "New York City", state: "New York" }
{ name: "San Francisco", state: "California" }
Untergeordnete Sammlungen
Mit der Phase collection(...) können Sie auch Sammlungen unter einem bestimmten übergeordneten Element ausrichten, indem Sie den vollständigen Pfad zur Phase angeben.
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});
In diesem Beispiel möchten wir nur die Abteilungen von New York City.
Node.js
const results = await db.pipeline()
.collection("/cities/NY/departments")
.sort(field("employees").ascending())
.execute();
Dadurch werden alle Abteilungen unter dem vollständigen Pfad cities/NY/departments zurückgegeben.
{ name: "NY Building Deparment", employees: 1000 }
{ name: "NY Finance Deparment", employees: 1200 }