Beschreibung
Gibt Dokumente zurück, indem eine feste Gruppe vordefinierter Dokumente durchsucht wird.
Die Phase muss ein oder mehrere Dokumente als Eingabe verwenden und darf keine Dokumente mit doppelten Pfaden enthalten. Wenn ein referenziertes Dokument nicht vorhanden ist, werden für diesen Dokumentpfad keine Ergebnisse generiert.
Diese Phase verhält sich ähnlich wie Cloud Firestore batchGet und ermöglicht das direkte Filtern der Ergebnisse anstatt der Durchführung von Nachfilterungsschritten nach dem Batchvorgang.
Beispiele
Web
const results = await execute(db.pipeline() .documents([ doc(db, "cities", "SF"), doc(db, "cities", "DC"), doc(db, "cities", "NY") ]) );
Swift
let results = try await db.pipeline() .documents([ db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ]).execute()
Kotlin
val results = db.pipeline() .documents( db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ).execute()
Java
Task<Pipeline.Snapshot> results = db.pipeline() .documents( db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ).execute();
Python
results = ( client.pipeline() .documents( client.collection("cities").document("SF"), client.collection("cities").document("DC"), client.collection("cities").document("NY"), ) .execute() )
Java
Pipeline.Snapshot results = firestore .pipeline() .documents( firestore.collection("cities").document("SF"), firestore.collection("cities").document("DC"), firestore.collection("cities").document("NY")) .execute() .get();
Go
snapshot := client.Pipeline(). Documents([]*firestore.DocumentRef{ client.Collection("cities").Doc("SF"), client.Collection("cities").Doc("DC"), client.Collection("cities").Doc("NY"), }). Execute(ctx)
Verhalten
Damit Sie die Phase documents(...) verwenden können, muss sie die erste Phase in der Pipeline sein.
Die Reihenfolge der Dokumente, die in der documents(...)-Phase zurückgegeben werden, ist instabil und kann nicht als zuverlässig angesehen werden. Eine nachfolgende sort(...)-Phase kann verwendet werden, um eine deterministische Reihenfolge zu erhalten.
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"});
Mit der Phase documents(...) können nur die Dokumente SF und NYC abgerufen und dann in aufsteigender Reihenfolge nach Namen sortiert werden.
Node.js
const results = await db.pipeline()
.documents(
db.collection("cities").doc("SF"),
db.collection("cities").doc("NYC"))
.sort(field("name").ascending())
.execute();
Mit dieser Abfrage werden die folgenden Dokumente erstellt:
{ name: "New York City", state: "New York" }
{ name: "San Francsico", state: "California" }