Documentos

Descripción

Devuelve documentos buscando un conjunto fijo de documentos predefinidos.

La etapa debe tomar uno o más documentos como entrada y no puede contener documentos con rutas duplicadas. Si no existe un documento al que se hace referencia, no se producirán resultados para esa ruta de acceso al documento.

Esta etapa se comporta de manera similar a batchGet de Firestore y permite filtrar los resultados directamente en lugar de realizar pasos de filtrado posteriores después de la operación por lotes.

Sintaxis

Node.js

const results = await db.pipeline()
  .documents(
    db.collection("cities").doc("SF"),
    db.collection("cities").doc("NY"))
  .execute();

Ejemplos 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();

Comportamiento

Para usar la etapa documents, debe aparecer como la primera etapa de la canalización.

El orden de los documentos que se devuelven desde la etapa documents es inestable y no se debe confiar en él. Se puede usar una etapa de ordenamiento posterior para obtener un ordenamiento determinístico.

Por ejemplo, para los siguientes 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'});

La etapa documents se puede usar para recuperar solo los documentos SF y NYC y, luego, ordenarlos de forma ascendente por nombre.

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 genera los siguientes documentos:

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