Cloud Firestore Data Model
Reference: https://firebase.google.com/docs/firestore/data-model
Cloud Firestore is a NoSQL, document-oriented database.
Unlike a SQL database, there are no tables or rows.
Instead, you store data in documents
, which are organized into collections
.
All documents
must be stored in collections
.
Documents can further have sub-collections
.
So the hierarchy looks something like -
'top-level collection' / 'document' / 'sub-collection' / 'sub-document' / ...
The rules for this hierarchy are:
collection
anddocument
are always alternating.- So, you cannot have a
collection
under acollection
- and cannot have a
document
under adocument
.
- So, you cannot have a
- Top-level is always a
collection
; cannot be adocument
. - Collection names as plural.
These rules are similar to Resource-Oriented Design
where
resources are similar to documents
in Firestore, and the resource instances are grouped under a collection
.
Then the Firestore path
is similar to a strict version of REST API path
.
firestore4k
lets you construct the path (which can be root collection
, document
, sub-collection
or sub-documents
),
and then perform corresponding operations (for collection
or for document
) in dynamic (flexible) of typed (type-safe) manner.
For the sample code in Guides, I will use:
- a root (top-level) collection:
users
- its sub (child) collection:
messages
Path | Description |
---|---|
users |
users as root collection |
users /user1 |
user1 document under users root collection |
users /user1/messages |
messages sub-collection under user1 document |
users /user1/messages /message1 |
message1 document under messages sub-collection |