Dokumente

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" }