Bird
Raised Fist0
GCPcloud~10 mins

Firestore document model in GCP - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Firestore document model
Start: Create Collection
↓
Add Document with ID
↓
Add Fields (key-value pairs)
↓
Document Stored in Collection
↓
Query or Update Document
↓
End
This flow shows how you create a collection, add a document with fields, and then store or query it in Firestore.
Execution Sample
GCP
collection = 'users'
doc_id = 'user123'
document = {'name': 'Alice', 'age': 30}
firestore.collection(collection).document(doc_id).set(document)
This code creates a 'users' collection, adds a document with ID 'user123' containing name and age fields.
Process Table
StepActionInputResultState Change
1Create collection reference'users'Collection 'users' readyCollection 'users' created
2Create document reference'user123'Document ref 'user123' readyDocument ref 'user123' created in 'users'
3Prepare document data{'name': 'Alice', 'age': 30}Data ready to storeData prepared with fields name and age
4Set document in FirestoreDocument ref + dataDocument stored in 'users/user123'Firestore now has document 'user123' with fields
5Query document'users/user123'Returns {'name': 'Alice', 'age': 30}Document data retrieved
6Update document fieldSet age=31Document updatedField 'age' changed to 31
7Query updated document'users/user123'Returns {'name': 'Alice', 'age': 31}Updated data retrieved
8End--Process complete
💡 Process ends after document is created, updated, and queried successfully.
Status Tracker
VariableStartAfter Step 3After Step 4After Step 6Final
collectionundefined'users''users''users''users'
doc_idundefined'user123''user123''user123''user123'
documentundefined{'name': 'Alice', 'age': 30}{'name': 'Alice', 'age': 30}{'name': 'Alice', 'age': 31}{'name': 'Alice', 'age': 31}
firestore stateemptyemptyhas 'users/user123' with fieldshas 'users/user123' with updated agehas 'users/user123' with updated age
Key Moments - 3 Insights
Why do we need to specify a document ID when adding a document?
Specifying a document ID (see Step 2) lets you control the document's address in the collection. Without it, Firestore creates a random ID, which can make it harder to find or update later.
What happens if we update a field in the document?
Updating a field (Step 6) changes only that field's value in Firestore. The rest of the document stays the same, as shown by the variable_tracker where 'age' changes but 'name' remains.
Can a document exist without fields?
No, a document must have at least one field. In Step 3, we prepare fields before storing. Firestore requires data to store a document.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the document data after Step 4?
A{'name': 'Alice', 'age': 31}
B{}
C{'name': 'Alice', 'age': 30}
DNo data stored yet
💡 Hint
Check the 'Result' column at Step 4 in the execution_table.
At which step does the 'age' field get updated to 31?
AStep 6
BStep 4
CStep 3
DStep 7
💡 Hint
Look at the 'Action' and 'State Change' columns in the execution_table for field updates.
If we do not specify a document ID, what changes in the execution flow?
AStep 4 fails to store the document
BStep 2 is skipped and Firestore generates a random ID
CStep 3 changes the document data
DNo document is created
💡 Hint
Refer to Step 2 in the execution_table about document reference creation.
Concept Snapshot
Firestore Document Model:
- Collections hold documents.
- Documents have unique IDs and fields (key-value pairs).
- Create a collection, then add a document with fields.
- Update fields without replacing whole document.
- Query documents by collection and ID.
Full Transcript
This visual execution shows how Firestore stores data using collections and documents. First, a collection named 'users' is created. Then a document with ID 'user123' is prepared with fields 'name' and 'age'. This document is stored in Firestore under the 'users' collection. Later, the document is queried and the 'age' field is updated from 30 to 31. Each step updates the Firestore state and variables accordingly. Key points include the importance of document IDs, how fields are updated individually, and that documents must have fields to exist.

Practice

(1/5)
1. What is the basic unit of data storage in Firestore?
easy
A. A table
B. A document
C. A bucket
D. A file

Solution

  1. Step 1: Understand Firestore data structure

    Firestore organizes data into collections and documents, not tables or files.
  2. Step 2: Identify the smallest data unit

    The smallest unit is a document, which holds fields and values.
  3. Final Answer:

    A document -> Option B
  4. Quick Check:

    Firestore stores data as documents [OK]
Hint: Remember: Firestore uses documents, not tables or files [OK]
Common Mistakes:
  • Confusing documents with tables from SQL databases
  • Thinking Firestore stores files like Cloud Storage
  • Assuming buckets are data units in Firestore
2. Which of the following is the correct way to represent a Firestore document field in JSON-like syntax?
easy
A. "name": "Alice"
B. "name" = "Alice"
C. name: Alice
D. 'name' -> 'Alice'

Solution

  1. Step 1: Recall JSON field syntax

    JSON uses double quotes for keys and string values, separated by a colon.
  2. Step 2: Match Firestore document field style

    Firestore documents resemble JSON, so the correct syntax is "key": "value".
  3. Final Answer:

    "name": "Alice" -> Option A
  4. Quick Check:

    Firestore fields use JSON syntax [OK]
Hint: Use colon and double quotes for Firestore fields [OK]
Common Mistakes:
  • Using equals sign instead of colon
  • Omitting quotes around keys or values
  • Using arrow notation which is invalid
3. Given a Firestore collection 'users' with documents having fields {"age": 30, "active": true}, what will the query return if you filter for documents where active == false?
medium
A. All documents with active false
B. All documents regardless of active field
C. Error due to invalid filter
D. No documents

Solution

  1. Step 1: Understand the data and filter condition

    Documents have "active": true, but the query filters for active == false.
  2. Step 2: Evaluate query result

    No documents match active == false, so the query returns no results.
  3. Final Answer:

    No documents -> Option D
  4. Quick Check:

    Filter matches no documents [OK]
Hint: Filter matches only exact values; no match means empty result [OK]
Common Mistakes:
  • Assuming query returns all documents
  • Expecting an error for valid filter
  • Confusing true and false values
4. You try to add a document with this data: {name: "Bob", age: "twenty"}. What is the likely issue?
medium
A. Firestore requires age to be a number, not a string
B. No issue, document will be added
C. Field names must be in quotes
D. Document ID is missing

Solution

  1. Step 1: Check field name syntax

    Firestore expects field names as strings in JSON, so keys must be quoted.
  2. Step 2: Analyze the given data

    Keys are unquoted (name, age), which is invalid JSON syntax for Firestore.
  3. Final Answer:

    Field names must be in quotes -> Option C
  4. Quick Check:

    Field names need quotes in Firestore JSON [OK]
Hint: Always quote field names in Firestore documents [OK]
Common Mistakes:
  • Thinking Firestore auto-corrects missing quotes
  • Assuming string values for numbers cause errors
  • Believing document ID is mandatory in data
5. You want to model a blog app in Firestore. Each blog post has multiple comments. Which is the best Firestore document model to organize this data?
hard
A. Create a 'posts' collection with documents for each post, and a subcollection 'comments' inside each post document
B. Store all comments as an array field inside each blog post document
C. Create a single collection 'comments' with a field referencing the post ID
D. Store all posts and comments in one flat collection

Solution

  1. Step 1: Consider Firestore best practices for related data

    Large or growing lists like comments should be in subcollections, not arrays, for scalability.
  2. Step 2: Evaluate options for organizing posts and comments

    Using a 'posts' collection with 'comments' subcollections keeps data organized and efficient.
  3. Final Answer:

    Create a 'posts' collection with documents for each post, and a subcollection 'comments' inside each post document -> Option A
  4. Quick Check:

    Use subcollections for related many items [OK]
Hint: Use subcollections for many related items, not arrays [OK]
Common Mistakes:
  • Putting all comments in one array causing size limits
  • Using a flat collection losing post-comment grouping
  • Referencing post ID without subcollections complicates queries
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard