Beschreibung
Gibt Dokumente zurück, indem eine feste Gruppe vordefinierter Dokumente durchsucht wird.
Die Phase muss mindestens ein Dokument 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 ähnelt Cloud Firestore – batchGet und ermöglicht das direkte Filtern der Ergebnisse anstatt Nachfilterungsschritte nach dem Batchvorgang auszuführen.
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 als erste Phase in der Pipeline aufgeführt sein.
Die Reihenfolge der Dokumente, die in der documents(...)-Phase zurückgegeben werden, ist instabil und kann nicht als zuverlässig angesehen werden. 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"});
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" }