Bird
Raised Fist0
GCPcloud~20 mins

Firestore document model in GCP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Firestore Document Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Firestore Document Structure

Which statement correctly describes a Firestore document?

AA document is a collection of documents and cannot contain key-value pairs.
BA document is a flat list of values without keys and cannot contain nested collections.
CA document is a single string value stored in Firestore without any keys.
DA document is a collection of key-value pairs and can contain nested collections.
Attempts:
2 left
💡 Hint

Think about how data is organized inside Firestore documents.

❓ Architecture
intermediate
2:00remaining
Firestore Collection and Document Relationship

Given a Firestore database, which option correctly describes the relationship between collections and documents?

ACollections contain documents, and documents can contain subcollections.
BDocuments contain collections, and collections can contain subdocuments.
CCollections contain only other collections, not documents.
DDocuments contain only key-value pairs and cannot contain collections.
Attempts:
2 left
💡 Hint

Consider how Firestore organizes data hierarchically.

❓ Configuration
advanced
2:00remaining
Firestore Document Data Types

Which Firestore document data type is not supported directly?

ATimestamp
BArray
CFunction
DGeoPoint
Attempts:
2 left
💡 Hint

Think about what kinds of data Firestore stores versus what it executes.

❓ security
advanced
2:00remaining
Firestore Document Access Control

Which Firestore security rule correctly restricts read access to documents in the 'users' collection only to the authenticated user with matching user ID?

GCP
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read: if request.auth.uid == userId;
    }
  }
}
Arequest.auth.uid == userId
Brequest.auth.token.email_verified == true
Crequest.auth.uid != userId
Drequest.time < timestamp.date(2025, 1, 1)
Attempts:
2 left
💡 Hint

Think about how to match the authenticated user's ID with the document ID.

❓ service_behavior
expert
3:00remaining
Firestore Document Write Behavior with Transactions

Consider this Firestore transaction code snippet:

const docRef = firestore.collection('counters').doc('counter1');
await firestore.runTransaction(async (transaction) => {
  const doc = await transaction.get(docRef);
  const newCount = (doc.data()?.count ?? 0) + 1;
  transaction.update(docRef, { count: newCount });
});

What is the expected behavior if two clients run this transaction simultaneously?

ABoth transactions will overwrite each other, resulting in only one increment.
BOne transaction will fail due to a conflict and retry automatically, ensuring correct count increment.
CBoth transactions will increment the count correctly without overwriting each other.
DThe transaction will cause a syntax error and not run.
Attempts:
2 left
💡 Hint

Think about how Firestore transactions handle concurrent writes.

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