Bird
Raised Fist0
Firebasecloud~20 mins

Index management in Firebase - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Firestore Index Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the output of this Firestore query with missing index?
Consider a Firestore collection users with fields age and city. You run this query:

db.collection('users').where('age', '>', 25).where('city', '==', 'NYC').get()

If the required composite index is missing, what will happen?
Firebase
db.collection('users').where('age', '>', 25).where('city', '==', 'NYC').get()
AThe query returns no results but does not throw an error.
BThe query returns users filtered only by age, ignoring city.
CThe query throws an error indicating a missing index and provides a link to create it.
DThe query returns all users older than 25 in NYC without error.
Attempts:
2 left
💡 Hint
Firestore requires composite indexes for multiple where filters on different fields.
🧠 Conceptual
intermediate
1:30remaining
Why are composite indexes important in Firestore?
Which of the following best explains why Firestore uses composite indexes?
ATo allow queries filtering or sorting on multiple fields efficiently.
BTo store data redundantly for backup purposes.
CTo encrypt data fields for security.
DTo automatically generate reports from data.
Attempts:
2 left
💡 Hint
Think about how Firestore handles queries with multiple conditions.
📝 Syntax
advanced
2:30remaining
Which Firestore index definition is valid in index configuration file?
Given the Firestore index configuration JSON, which option correctly defines a composite index on age ascending and city descending for collection users?
Firebase
{
  "indexes": [
    {
      "collectionGroup": "users",
      "queryScope": "COLLECTION",
      "fields": [
        {"fieldPath": "age", "order": "ASCENDING"},
        {"fieldPath": "city", "order": "DESCENDING"}
      ]
    }
  ]
}
A{ "collectionGroup": "users", "queryScope": "COLLECTION", "fields": [ {"fieldPath": "age", "direction": "ASC"}, {"fieldPath": "city", "direction": "DESC"} ] }
B{ "collectionGroup": "users", "queryScope": "COLLECTION", "fields": [ {"fieldPath": "age", "order": "ASCENDING"}, {"fieldPath": "city", "order": "DESCENDING"} ] }
C{ "collection": "users", "fields": [ {"fieldPath": "age", "order": "ASCENDING"}, {"fieldPath": "city", "order": "DESCENDING"} ] }
D{ "collectionGroup": "users", "queryScope": "COLLECTION", "fields": [ {"fieldPath": "age", "order": "ASC"}, {"fieldPath": "city", "order": "DESC"} ] }
Attempts:
2 left
💡 Hint
Check the exact field names Firestore expects in index config.
❓ optimization
advanced
2:00remaining
How to optimize Firestore queries with multiple filters?
You have a Firestore query filtering on status and priority fields. Which approach best optimizes query performance?
AUse only one filter at a time to avoid needing indexes.
BCreate separate single-field indexes on <code>status</code> and <code>priority</code>.
CAvoid indexes and filter results client-side after fetching all documents.
DCreate a composite index on <code>status</code> and <code>priority</code> fields.
Attempts:
2 left
💡 Hint
Think about how Firestore uses indexes for multiple filters.
🔧 Debug
expert
3:00remaining
Why does this Firestore query fail despite having indexes?
You have these indexes:
- Composite index on category ascending and date descending
- Single-field indexes on category and date

You run this query:

db.collection('items').where('category', '==', 'books').orderBy('date', 'asc').get()

Why does it fail?
AThe composite index orders <code>date</code> descending but query orders ascending, causing mismatch.
BThe single-field index on <code>date</code> is missing.
CFirestore does not support ordering by <code>date</code> after filtering by <code>category</code>.
DThe query is missing a limit clause.
Attempts:
2 left
💡 Hint
Check if index order matches query order.

Practice

(1/5)
1.

What is the main purpose of indexes in Firebase Firestore?

easy
A. To speed up searching and sorting data
B. To store large files like images
C. To backup the database automatically
D. To encrypt data for security

Solution

  1. Step 1: Understand what indexes do in databases

    Indexes help the database find data faster by organizing it efficiently.
  2. Step 2: Apply this to Firebase Firestore

    In Firestore, indexes speed up searching and sorting operations on data.
  3. Final Answer:

    To speed up searching and sorting data -> Option A
  4. Quick Check:

    Indexes improve query speed = B [OK]
Hint: Indexes speed up queries by organizing data [OK]
Common Mistakes:
  • Confusing indexes with file storage
  • Thinking indexes backup data
  • Assuming indexes encrypt data
2.

Which of the following is the correct way to define a composite index in firestore.indexes.json?

{
  "indexes": [
    {
      "collectionGroup": "users",
      "queryScope": "COLLECTION",
      "fields": [
        {"fieldPath": "age", "order": "ASCENDING"},
        {"fieldPath": "name", "order": "DESCENDING"}
      ]
    }
  ]
}
easy
A. Defines a composite index on 'age' ascending and 'name' descending for 'users' collection
B. Defines a single-field index only on 'age' field
C. Defines an index for storing files in 'users' collection
D. Defines a backup schedule for 'users' collection

Solution

  1. Step 1: Read the JSON structure for indexes

    The JSON shows two fields with order specified, which means a composite index.
  2. Step 2: Match fields and collectionGroup

    It targets the 'users' collection group with 'age' ascending and 'name' descending order.
  3. Final Answer:

    Defines a composite index on 'age' ascending and 'name' descending for 'users' collection -> Option A
  4. Quick Check:

    Composite index JSON matches Defines a composite index on 'age' ascending and 'name' descending for 'users' collection [OK]
Hint: Composite index JSON lists multiple fields with order [OK]
Common Mistakes:
  • Thinking it defines a single-field index
  • Confusing index with file storage or backup
  • Ignoring the order property in fields
3.

Given this Firestore query:

db.collection('orders').where('status', '==', 'shipped').orderBy('date', 'desc')

Which index is required to support this query?

medium
A. No index needed for this query
B. Single-field index on 'date' only
C. Composite index on fields 'status' (ASCENDING) and 'date' (DESCENDING)
D. Composite index on 'date' (ASCENDING) and 'status' (DESCENDING)

Solution

  1. Step 1: Identify query filters and sort

    The query filters by 'status' equal to 'shipped' and orders by 'date' descending.
  2. Step 2: Determine required index fields and order

    Firestore needs a composite index with 'status' ascending (default for equality) and 'date' descending as per orderBy.
  3. Final Answer:

    Composite index on fields 'status' (ASCENDING) and 'date' (DESCENDING) -> Option C
  4. Quick Check:

    Equality + orderBy needs composite index = A [OK]
Hint: Equality filters + orderBy need composite index [OK]
Common Mistakes:
  • Assuming single-field index suffices
  • Mixing order directions in index
  • Thinking no index is needed
4.

You deployed a new composite index but your Firestore query still fails with an error about missing index. What is the most likely cause?

medium
A. You need to restart your app to apply index changes
B. You forgot to run firebase deploy --only firestore:indexes after editing firestore.indexes.json
C. You used the wrong database URL
D. Your query does not need any index

Solution

  1. Step 1: Understand index deployment process

    Editing firestore.indexes.json only changes local config; deployment is needed to update Firestore.
  2. Step 2: Identify missing deployment command

    If you forget to run firebase deploy --only firestore:indexes, Firestore won't have the new index.
  3. Final Answer:

    You forgot to run firebase deploy --only firestore:indexes after editing firestore.indexes.json -> Option B
  4. Quick Check:

    Index changes require deploy command = D [OK]
Hint: Always deploy indexes after editing JSON file [OK]
Common Mistakes:
  • Assuming query needs no index
  • Thinking app restart applies index
  • Confusing database URL with index issues
5.

You want to optimize a Firestore query that filters by category and price, and sorts by rating. Which index should you create?

{
  "collectionGroup": "products",
  "queryScope": "COLLECTION",
  "fields": [
    {"fieldPath": "category", "order": "ASCENDING"},
    {"fieldPath": "price", "order": "ASCENDING"},
    {"fieldPath": "rating", "order": "DESCENDING"}
  ]
}

Why is this index necessary?

hard
A. It stores large files related to 'products'
B. It backs up the 'products' collection automatically
C. It encrypts the 'products' data for security
D. It supports filtering on 'category' and 'price' and sorting by 'rating' efficiently

Solution

  1. Step 1: Analyze query requirements

    The query filters on 'category' and 'price' and sorts by 'rating'. All three fields must be indexed.
  2. Step 2: Understand composite index role

    A composite index with these fields and orders allows Firestore to quickly find and sort matching documents.
  3. Step 3: Confirm index JSON matches query needs

    The JSON defines a composite index on 'category' ASC, 'price' ASC, and 'rating' DESC, matching the query.
  4. Final Answer:

    It supports filtering on 'category' and 'price' and sorting by 'rating' efficiently -> Option D
  5. Quick Check:

    Composite index matches filters + sort = A [OK]
Hint: Composite index must cover all filters and sort fields [OK]
Common Mistakes:
  • Thinking index backs up or encrypts data
  • Ignoring the order of fields in index
  • Creating single-field indexes only
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