Documentos

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