Documents (Input Stage)
Description
Returns documents by looking up a fixed set of predefined documents.
The stage must take one or more documents as input and cannot contain documents with duplicate paths. If a referenced document does not exist, no results will be produced for that document path.
This stage behaves similar to Firestore's batchGet
and allows
filtering on the results directly rather than performing post-filtering steps
after the batch operation.
Syntax
Node.js
const
results
=
await
db
.
pipeline
()
.
documents
(
db
.
collection
(
"cities"
).
doc
(
"SF"
),
db
.
collection
(
"cities"
).
doc
(
"NY"
))
.
execute
();
Client examples
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 ();
Behavior
In order to use the documents
stage, it must appear as the first stage
in the pipeline.
The order of documents returned from the documents
stage is unstable and
shouldn't be relied upon. A subsequent sort stage can be used to obtain a
deterministic ordering.
For example, for the following documents:
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'
});
The documents
stage can be used to retrieve only the SF
and NYC
documents
and then sort them in ascending order of name.
Node.js
const
results
=
await
db
.
pipeline
()
.
documents
(
db
.
collection
(
'cities'
).
doc
(
'SF'
),
db
.
collection
(
'cities'
).
doc
(
'NYC'
))
.
sort
(
field
(
"name"
).
ascending
())
.
execute
();
This query produces the following documents:
{
name
:
'New York City'
,
state
:
'New York'
}
{
name
:
'San Francsico'
,
state
:
'California'
}

