📖 Scenario: You are building a simple app to store user profiles in Google Firestore. Each user has a unique ID, a name, and an email address. You want to create the Firestore document model to represent these users.
🎯 Goal: Create a Firestore document model by defining a dictionary that represents a user profile, add a configuration for the collection name, write the code to add the user document to Firestore, and complete the Firestore client initialization.
📋 What You'll Learn
Create a dictionary called user_profile with keys id, name, and email and exact values "user123", "Alice Smith", and "alice@example.com" respectively.
Create a variable called collection_name and set it to "users".
Write code to add the user_profile dictionary as a document to the Firestore collection named collection_name using the id as the document ID.
Initialize the Firestore client by importing the necessary module and creating a client instance called db.
💡 Why This Matters
🌍 Real World
Firestore is a popular NoSQL database used in many cloud applications to store and sync data in real time. Modeling documents correctly is essential for efficient data storage and retrieval.
💼 Career
Understanding Firestore document models and how to interact with Firestore using client libraries is a key skill for cloud developers and engineers working with Google Cloud Platform.
Progress0 / 4 steps
1
Create the user profile dictionary
Create a dictionary called user_profile with these exact entries: 'id': 'user123', 'name': 'Alice Smith', and 'email': 'alice@example.com'.
GCP
Hint
Use curly braces to create a dictionary and separate keys and values with colons.
2
Set the Firestore collection name
Create a variable called collection_name and set it to the string 'users'.
GCP
Hint
Assign the string 'users' to the variable collection_name.
3
Add the user document to Firestore
Write code to add the user_profile dictionary as a document to the Firestore collection named collection_name using the id field as the document ID. Use db.collection(collection_name).document(user_profile['id']).set(user_profile).
GCP
Hint
Use the Firestore client db to access the collection and set the document.
4
Initialize the Firestore client
Import firestore from google.cloud and create a Firestore client instance called db using firestore.Client().
GCP
Hint
Use the import statement and create the client before using it.
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
Step 1: Understand Firestore data structure
Firestore organizes data into collections and documents, not tables or files.
Step 2: Identify the smallest data unit
The smallest unit is a document, which holds fields and values.
Final Answer:
A document -> Option B
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
Step 1: Recall JSON field syntax
JSON uses double quotes for keys and string values, separated by a colon.
Step 2: Match Firestore document field style
Firestore documents resemble JSON, so the correct syntax is "key": "value".
Final Answer:
"name": "Alice" -> Option A
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
Step 1: Understand the data and filter condition
Documents have "active": true, but the query filters for active == false.
Step 2: Evaluate query result
No documents match active == false, so the query returns no results.
Final Answer:
No documents -> Option D
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
Step 1: Check field name syntax
Firestore expects field names as strings in JSON, so keys must be quoted.
Step 2: Analyze the given data
Keys are unquoted (name, age), which is invalid JSON syntax for Firestore.
Final Answer:
Field names must be in quotes -> Option C
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
Step 1: Consider Firestore best practices for related data
Large or growing lists like comments should be in subcollections, not arrays, for scalability.
Step 2: Evaluate options for organizing posts and comments
Using a 'posts' collection with 'comments' subcollections keeps data organized and efficient.
Final Answer:
Create a 'posts' collection with documents for each post, and a subcollection 'comments' inside each post document -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.