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();
Go
snapshot := client.Pipeline(). Collection("users/bob/games"). Sort(firestore.Orders(firestore.Ascending(firestore.FieldOf("name")))). Execute(ctx)
Verhalten
Damit die collection(...)-Phase verwendet werden kann, muss sie als erste Phase in der Pipeline (oder Subpipeline) angezeigt werden.
Die Reihenfolge der Dokumente, die in der Phase collection(...) zurückgegeben werden, ist instabil und nicht zuverlässig. Firestore versucht, die Abfrage so effizient wie möglich auszuführen. Je nach Schema oder Indexkonfiguration kann sich die Reihenfolge ändern. Eine nachfolgende sort(...)-Phase kann verwendet werden, um eine deterministische Reihenfolge zu erhalten.
Beispiel für die folgenden Dokumente:
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"});
Mit der Phase collection können Sie alle Städte in der Sammlung cities abrufen und dann in aufsteigender Reihenfolge nach Namen sortieren.
Node.js
const results = await db.pipeline()
.collection("/cities")
.sort(field("name").ascending())
.execute();
Diese Abfrage erzeugt die folgenden Dokumente:
{ name: "Chicago", state: "Illinois" }
{ name: "New York City", state: "New York" }
{ name: "San Francisco", state: "California" }
Untergeordnete Sammlungen
Die Phase collection(...) kann auch verwendet werden, um Sammlungen unter einem bestimmten übergeordneten Element anzugeben. Geben Sie dazu den vollständigen Pfad zur Phase an.
Beispiel für die folgenden Dokumente:
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 der Stadt New York.
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 }