Collections
Classes for representing collections for the Google Cloud Firestore API.
class google.cloud.firestore_v1.base_collection.BaseCollectionReference(*path, **kwargs)
Bases: Generic
[ google.cloud.firestore_v1.base_query.QueryType
]
A reference to a collection in a Firestore database.
The collection may already exist or this class can facilitate creation of documents within the collection.
-
Parameters
-
path( Tuple [ str , **... ] ) – The components in the collection path. This is a series of strings representing each collection and sub-collection ID, as well as the document IDs for any documents that contain a sub-collection.
-
kwargs( dict ) – The keyword arguments for the constructor. The only supported keyword is
clientand it must be aClientif provided. It represents the client that created this collection reference.
-
-
Raises
-
ValueError – if
* the
pathis empty * there are an even number of elements * a collection ID inpathis not a string * a document ID inpathis not a string -
TypeError – If a keyword other than
clientis used.
-
avg(field_ref: str | FieldPath , alias=None)
Adds an avg over the nested query.
-
Parameters
-
field_ref( Union [ str , *[ google.cloud.firestore_v1.field_path.FieldPath ](field_path.md#google.cloud.firestore_v1.field_path.FieldPath) ]*) – The field to aggregate across.
-
alias( Optional [ str ] ) – Optional name of the field to store the result of the aggregation into. If not provided, Firestore will pick a default name following the format field_<incremental_id++>.
-
count(alias=None)
Adds a count over the nested query.
-
Parameters
alias( str ) – (Optional) The alias for the count
document(document_id: Optional [ str ] = None)
Create a sub-document underneath the current collection.
-
Parameters
document_id( Optional [ str ] ) – The document identifier within the current collection. If not provided, will default to a random 20 character string composed of digits, uppercase and lowercase and letters.
-
Returns
The child document.
-
Return type
end_at(document_fields: Union[ DocumentSnapshot , dict , list , tuple ])
End query at a cursor with this collection as parent.
See end_at()
for
more information on this method.
-
Parameters
document_fields(Union[
DocumentSnapshot, dict, list, tuple]) – A document snapshot or a dictionary/list/tuple of fields representing a query results cursor. A cursor is a collection of values that represent a position in a query result set. -
Returns
A query with cursor.
-
Return type
end_before(document_fields: Union[ DocumentSnapshot , dict , list , tuple ])
End query before a cursor with this collection as parent.
See end_before()
for
more information on this method.
-
Parameters
document_fields(Union[
DocumentSnapshot, dict, list, tuple]) – A document snapshot or a dictionary/list/tuple of fields representing a query results cursor. A cursor is a collection of values that represent a position in a query result set. -
Returns
A query with cursor.
-
Return type
property id()
The collection identifier.
-
Returns
The last component of the path.
-
Return type
limit(count: int )
Create a limited query with this collection as parent.
NOTE: limit and limit_to_last are mutually exclusive. Setting limit will drop previously set limit_to_last.
See limit()
for
more information on this method.
-
Parameters
count( int ) – Maximum number of documents to return that match the query.
-
Returns
A limited query.
-
Return type
limit_to_last(count: int )
Create a limited to last query with this collection as parent.
NOTE: limit and limit_to_last are mutually exclusive. Setting limit_to_last will drop previously set limit.
See limit_to_last()
for more information on this method.
-
Parameters
count( int ) – Maximum number of documents to return that match the query.
-
Returns
A limited to last query.
-
Return type
offset(num_to_skip: int )
Skip to an offset in a query with this collection as parent.
See offset()
for
more information on this method.
-
Parameters
num_to_skip( int ) – The number of results to skip at the beginning of query results. (Must be non-negative.)
-
Returns
An offset query.
-
Return type
order_by(field_path: str , **kwargs)
Create an “order by” query with this collection as parent.
See order_by()
for
more information on this method.
-
Parameters
-
Returns
An “order by” query.
-
Return type
property parent()
Document that owns the current collection.
-
Returns
The parent document, if the current collection is not a top-level collection.
-
Return type
Optional[
DocumentReference]
select(field_paths: Iterable [ str ])
Create a “select” query with this collection as parent.
See select()
for
more information on this method.
-
Parameters
field_paths( Iterable [ str , **... ] ) – An iterable of field paths (
.-delimited list of field names) to use as a projection of document fields in the query results. -
Returns
A “projected” query.
-
Return type
start_after(document_fields: Union[ DocumentSnapshot , dict , list , tuple ])
Start query after a cursor with this collection as parent.
See start_after()
for
more information on this method.
-
Parameters
document_fields(Union[
DocumentSnapshot, dict, list, tuple]) – A document snapshot or a dictionary/list/tuple of fields representing a query results cursor. A cursor is a collection of values that represent a position in a query result set. -
Returns
A query with cursor.
-
Return type
start_at(document_fields: Union[ DocumentSnapshot , dict , list , tuple ])
Start query at a cursor with this collection as parent.
See start_at()
for
more information on this method.
-
Parameters
document_fields(Union[
DocumentSnapshot, dict, list, tuple]) – A document snapshot or a dictionary/list/tuple of fields representing a query results cursor. A cursor is a collection of values that represent a position in a query result set. -
Returns
A query with cursor.
-
Return type
sum(field_ref: str | FieldPath , alias=None)
Adds a sum over the nested query.
-
Parameters
-
field_ref( Union [ str , *[ google.cloud.firestore_v1.field_path.FieldPath ](field_path.md#google.cloud.firestore_v1.field_path.FieldPath) ]*) – The field to aggregate across.
-
alias( Optional [ str ] ) – Optional name of the field to store the result of the aggregation into. If not provided, Firestore will pick a default name following the format field_<incremental_id++>.
-
where(field_path: Optional [ str ] = None, op_string: Optional [ str ] = None, value=None, *, filter=None)
Create a “where” query with this collection as parent.
See where()
for
more information on this method.
-
Parameters
-
field_path( str ) – A field path (
.-delimited list of field names) for the field to filter on. Optional. -
op_string( str ) – A comparison operation in the form of a string. Acceptable values are
<,<=,==,>=,>, andin. Optional. -
value( Any ) – The value to compare the field against in the filter. If
valueisNoneor a NaN, then==is the only allowed operation. Ifop_stringisin,valuemust be a sequence of values. Optional. -
( class( filter ) – ~google.cloud.firestore_v1.base_query.BaseFilter): an instance of a Filter. Either a FieldFilter or a CompositeFilter.
-
-
Returns
A filtered query.
-
Return type
-
Raises
ValueError , ****if both the positional arguments** (* field_path , ****op_string , * value ***) * – and the filter keyword argument are passed at the same time.
Classes for representing collections for the Google Cloud Firestore API.
class google.cloud.firestore_v1.collection.CollectionReference(*path, **kwargs)
Bases: google.cloud.firestore_v1.base_collection.BaseCollectionReference
[ google.cloud.firestore_v1.query.Query
]
A reference to a collection in a Firestore database.
The collection may already exist or this class can facilitate creation of documents within the collection.
-
Parameters
-
path( Tuple [ str , **... ] ) – The components in the collection path. This is a series of strings representing each collection and sub-collection ID, as well as the document IDs for any documents that contain a sub-collection.
-
kwargs( dict ) – The keyword arguments for the constructor. The only supported keyword is
clientand it must be aClientif provided. It represents the client that created this collection reference.
-
-
Raises
-
ValueError – if
* the
pathis empty * there are an even number of elements * a collection ID inpathis not a string * a document ID inpathis not a string -
TypeError – If a keyword other than
clientis used.
-
add(document_data: dict , document_id: Optional [ str ] = None, retry: google.api_core.retry.Retry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
Create a document in the Firestore database with the provided data.
-
Parameters
-
document_data( dict ) – Property names and values to use for creating the document.
-
document_id( Optional [ str ] ) – The document identifier within the current collection. If not provided, an ID will be automatically assigned by the server (the assigned ID will be a random 20 character string composed of digits, uppercase and lowercase letters).
-
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
-
Returns
Pair of
-
The
update_timewhen the document was created/overwritten. -
A document reference for the created document.
-
-
Return type
Tuple[
google.protobuf.timestamp_pb2.Timestamp,DocumentReference] -
Raises
google.cloud.exceptions.Conflict– If
document_idis provided and the document already exists.
get(transaction: Optional [ google.cloud.firestore_v1.transaction.Transaction ] = None, retry: google.api_core.retry.Retry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
Read the documents in this collection.
This sends a RunQuery
RPC and returns a list of documents
returned in the stream of RunQueryResponse
messages.
-
Parameters
-
transaction– (Optional[
Transaction]): An existing transaction that this query will run in. -
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
If a transaction
is used and it already has write operations
added, this method cannot be used (i.e. read-after-write is not
allowed).
-
Returns
The documents in this collection that match the query.
-
Return type
list_documents(page_size: Optional [ int ] = None, retry: google.api_core.retry.Retry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
List all subdocuments of the current collection.
-
Parameters
-
page_size( Optional [ int ] ] ) – The maximum number of documents in each page of results from this request. Non-positive values are ignored. Defaults to a sensible value set by the API.
-
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
-
Returns
iterator of subdocuments of the current collection. If the collection does not exist at the time of snapshot, the iterator will be empty
-
Return type
Sequence[
DocumentReference]
on_snapshot(callback: Callable )
Monitor the documents in this collection.
This starts a watch on this collection using a background thread. The provided callback is run on the snapshot of the documents.
-
Parameters
callback(Callable[[
CollectionSnapshot], NoneType]) – a callback to run when a change occurs.
Example
from google.cloud import firestore_v1
db = firestore_v1.Client() collection_ref = db.collection(u’users’)
def on_snapshot(collection_snapshot, changes, read_time):
for doc in collection_snapshot.documents:
print(u’{} => {}’.format(doc.id, doc.to_dict()))
Watch this collection
collection_watch = collection_ref.on_snapshot(on_snapshot)
Terminate this watch
collection_watch.unsubscribe()
stream(transaction: Optional [ google.cloud.firestore_v1.transaction.Transaction ] = None, retry: google.api_core.retry.Retry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
Read the documents in this collection.
This sends a RunQuery
RPC and then returns an iterator which
consumes each document returned in the stream of RunQueryResponse
messages.
NOTE: The underlying stream of responses will time out after
the max_rpc_timeout_millis
value set in the GAPIC
client configuration for the RunQuery
API. Snapshots
not consumed from the iterator before that point will be lost.
If a transaction
is used and it already has write operations
added, this method cannot be used (i.e. read-after-write is not
allowed).
-
Parameters
-
transaction(Optional[
Transaction]) – An existing transaction that the query will run in. -
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
-
Yields
DocumentSnapshot– The next document that fulfills the query.
Classes for representing collections for the Google Cloud Firestore API.
class google.cloud.firestore_v1.async_collection.AsyncCollectionReference(*path, **kwargs)
Bases: google.cloud.firestore_v1.base_collection.BaseCollectionReference
[ google.cloud.firestore_v1.async_query.AsyncQuery
]
A reference to a collection in a Firestore database.
The collection may already exist or this class can facilitate creation of documents within the collection.
-
Parameters
-
path( Tuple [ str , **... ] ) – The components in the collection path. This is a series of strings representing each collection and sub-collection ID, as well as the document IDs for any documents that contain a sub-collection.
-
kwargs( dict ) – The keyword arguments for the constructor. The only supported keyword is
clientand it must be aClientif provided. It represents the client that created this collection reference.
-
-
Raises
-
ValueError – if
* the
pathis empty * there are an even number of elements * a collection ID inpathis not a string * a document ID inpathis not a string -
TypeError – If a keyword other than
clientis used.
-
async add(document_data: dict , document_id: Optional [ str ] = None, retry: google.api_core.retry_async.AsyncRetry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
Create a document in the Firestore database with the provided data.
-
Parameters
-
document_data( dict ) – Property names and values to use for creating the document.
-
document_id( Optional [ str ] ) – The document identifier within the current collection. If not provided, an ID will be automatically assigned by the server (the assigned ID will be a random 20 character string composed of digits, uppercase and lowercase letters).
-
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
-
Returns
Pair of
-
The
update_timewhen the document was created/overwritten. -
A document reference for the created document.
-
-
Return type
Tuple[
google.protobuf.timestamp_pb2.Timestamp,AsyncDocumentReference] -
Raises
google.cloud.exceptions.Conflict– If
document_idis provided and the document already exists.
document(document_id: Optional [ str ] = None)
Create a sub-document underneath the current collection.
-
Parameters
document_id( Optional [ str ] ) – The document identifier within the current collection. If not provided, will default to a random 20 character string composed of digits, uppercase and lowercase and letters.
-
Returns
The child document.
-
Return type
AsyncDocumentReference
async get(transaction: Optional [ google.cloud.firestore_v1.transaction.Transaction ] = None, retry: google.api_core.retry_async.AsyncRetry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
Read the documents in this collection.
This sends a RunQuery
RPC and returns a list of documents
returned in the stream of RunQueryResponse
messages.
-
Parameters
-
transaction– (Optional[
Transaction]): An existing transaction that this query will run in. -
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
If a transaction
is used and it already has write operations
added, this method cannot be used (i.e. read-after-write is not
allowed).
-
Returns
The documents in this collection that match the query.
-
Return type
async list_documents(page_size: Optional [ int ] = None, retry: google.api_core.retry_async.AsyncRetry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
List all subdocuments of the current collection.
-
Parameters
-
page_size( Optional [ int ] ] ) – The maximum number of documents in each page of results from this request. Non-positive values are ignored. Defaults to a sensible value set by the API.
-
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
-
Returns
iterator of subdocuments of the current collection. If the collection does not exist at the time of snapshot, the iterator will be empty
-
Return type
Sequence[
DocumentReference]
async stream(transaction: Optional [ google.cloud.firestore_v1.transaction.Transaction ] = None, retry: google.api_core.retry_async.AsyncRetry = _MethodDefault._DEFAULT_VALUE, timeout: Optional [ float ] = None)
Read the documents in this collection.
This sends a RunQuery
RPC and then returns an iterator which
consumes each document returned in the stream of RunQueryResponse
messages.
NOTE: The underlying stream of responses will time out after
the max_rpc_timeout_millis
value set in the GAPIC
client configuration for the RunQuery
API. Snapshots
not consumed from the iterator before that point will be lost.
If a transaction
is used and it already has write operations
added, this method cannot be used (i.e. read-after-write is not
allowed).
-
Parameters
-
transaction(Optional[
Transaction]) – An existing transaction that the query will run in. -
retry( google.api_core.retry.Retry ) – Designation of what errors, if any, should be retried. Defaults to a system-specified policy.
-
timeout( float ) – The timeout for this request. Defaults to a system-specified value.
-
-
Yields
DocumentSnapshot– The next document that fulfills the query.

