Documentos (estágio de entrada)
Descrição
Retorna documentos pesquisando um conjunto fixo de documentos predefinidos.
A etapa precisa receber um ou mais documentos como entrada e não pode conter documentos com caminhos duplicados. Se um documento referenciado não existir, nenhum resultado será gerado para esse caminho.
Essa etapa se comporta de maneira semelhante ao batchGet do Firestore e permite
filtrar os resultados diretamente, em vez de realizar etapas de pós-filtragem
após a operação em lote.
Exemplos
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
Android
val results = db.pipeline() .documents( db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ).execute()
Java
Android
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)
Comportamento
Para usar a etapa documents(...), ela precisa aparecer como a primeira etapa
no pipeline.
A ordem dos documentos retornados da etapa documents(...) é instável e não pode ser usada como referência. Uma etapa subsequente de sort(...) pode ser usada para obter uma ordenação determinística.
Por exemplo, para os seguintes documentos:
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"});
A etapa documents(...) pode ser usada para recuperar apenas os documentos SF e NYC e classificá-los em ordem crescente de nome.
Node.js
const results = await db.pipeline()
.documents(
db.collection("cities").doc("SF"),
db.collection("cities").doc("NYC"))
.sort(field("name").ascending())
.execute();
Esta consulta produz os seguintes documentos:
{ name: "New York City", state: "New York" }
{ name: "San Francsico", state: "California" }