Bird
Raised Fist0
Firebasecloud~10 mins

Index management in Firebase - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a single-field index on the 'age' field in Firestore.

Firebase
firestore.collection('users').orderBy('[1]').get()
Drag options to blanks, or click blank then click option'
Aname
Bage
Cemail
Daddress
Attempts:
3 left
💡 Hint
Common Mistakes
Using a field name that does not exist in the collection.
2fill in blank
medium

Complete the code to create a composite index query filtering by 'status' and ordering by 'createdAt'.

Firebase
firestore.collection('orders').where('status', '==', '[1]').orderBy('createdAt').get()
Drag options to blanks, or click blank then click option'
Ashipped
Bcompleted
Ccancelled
Dpending
Attempts:
3 left
💡 Hint
Common Mistakes
Using a status value that does not exist in the data.
3fill in blank
hard

Fix the error in the Firestore query by completing the missing index field.

Firebase
firestore.collection('products').orderBy('category').orderBy('[1]').get()
Drag options to blanks, or click blank then click option'
Aprice
Bname
Cstock
Drating
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a field that is not indexed or not relevant for sorting.
4fill in blank
hard

Fill both blanks to create a Firestore query that filters by 'type' and orders by 'timestamp' descending.

Firebase
firestore.collection('events').where('type', '==', '[1]').orderBy('timestamp', '[2]').get()
Drag options to blanks, or click blank then click option'
Aconference
Basc
Cdesc
Dmeetup
Attempts:
3 left
💡 Hint
Common Mistakes
Using ascending order when descending is required.
5fill in blank
hard

Fill all three blanks to create a Firestore query that filters by 'status', orders by 'priority' ascending, and limits results to 10.

Firebase
firestore.collection('tasks').where('status', '==', '[1]').orderBy('[2]', '[3]').limit(10).get()
Drag options to blanks, or click blank then click option'
Ain_progress
Bpriority
Casc
Ddesc
Attempts:
3 left
💡 Hint
Common Mistakes
Using descending order when ascending is needed.
Choosing wrong field names.

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