Documents

Description

Renvoie des documents en recherchant un ensemble fixe de documents prédéfinis.

L'étape doit prendre un ou plusieurs documents en entrée et ne peut pas contenir de documents avec des chemins d'accès en double. Si un document référencé n'existe pas, aucun résultat ne sera généré pour ce chemin d'accès au document.

Cette étape se comporte de la même manière que batchGet de Cloud Firestore et permet de filtrer directement les résultats plutôt que d'effectuer des étapes de post-filtrage après l'opération par lot.

Exemples

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();
Accéder
snapshot := client.Pipeline().
	Documents([]*firestore.DocumentRef{
		client.Collection("cities").Doc("SF"),
		client.Collection("cities").Doc("DC"),
		client.Collection("cities").Doc("NY"),
	}).
	Execute(ctx)

Comportement

Pour utiliser l'étape documents(...), elle doit apparaître comme la première étape du pipeline.

L'ordre des documents renvoyés à partir de l'étape documents(...) est instable et ne peut pas être considéré comme fiable. Une étape sort(...) ultérieure peut être utilisée pour obtenir un ordre déterministe.

Par exemple, pour les documents suivants :

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

L'étape documents(...) peut être utilisée pour récupérer uniquement les documents SF et NYC, puis les trier par ordre croissant de nom.

Node.js

const results = await db.pipeline()
  .documents(
    db.collection("cities").doc("SF"),
    db.collection("cities").doc("NYC"))
  .sort(field("name").ascending())
  .execute();

Cette requête génère les documents suivants :

  { name: "New York City", state: "New York" }
  { name: "San Francsico", state: "California" }