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.
Sintaxe
Node.js
const results = await db.pipeline()
.documents(
db.collection("cities").doc("SF"),
db.collection("cities").doc("NY"))
.execute();
Exemplos de clientes
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();
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 deve ser usada como referência. Uma etapa de classificação subsequente 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'}