Bird
Raised Fist0
MongoDBquery~10 mins

createIndex method in MongoDB - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - createIndex method
Start with collection
↓
Call createIndex() with field(s)
↓
MongoDB builds index structure
↓
Index stored in database
↓
Index used to speed up queries
↓
End
The createIndex method builds an index on specified fields in a collection to speed up queries.
Execution Sample
MongoDB
db.users.createIndex({ age: 1 })
Creates an ascending index on the 'age' field in the 'users' collection.
Execution Table
StepActionInputResultNotes
1Start with collectionusersCollection readyCollection 'users' exists
2Call createIndex{ age: 1 }Index creation startedAscending index on 'age' field
3MongoDB builds indexScan documentsIndex entries createdEach document's 'age' value indexed
4Store indexIndex entriesIndex saved in databaseIndex ready for use
5Use indexQuery on 'age'Query fasterIndex speeds up searches
6ExitIndex createdOperation completeIndex creation finished successfully
💡 Index creation completes after scanning all documents and saving the index.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
collectionusersusersusersusersusers
indexSpecnone{ age: 1 }{ age: 1 }{ age: 1 }{ age: 1 }
indexEntriesemptyemptypopulatedpopulatedpopulated
indexStoredfalsefalsefalsetruetrue
Key Moments - 3 Insights
Why do we specify 1 or -1 in createIndex({ age: 1 })?
The 1 means ascending order for the index on 'age'. Using -1 would create a descending index. This affects how MongoDB sorts and searches the index (see execution_table step 2).
Does createIndex immediately speed up all queries?
No, the index is only ready after MongoDB finishes building and storing it (see execution_table steps 3 and 4). Queries before that won't use the index.
What happens if the collection is empty when createIndex runs?
MongoDB creates an empty index structure but it still completes successfully (indexEntries remain empty, see variable_tracker).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result after Step 3?
AIndex saved in database
BIndex entries created
CCollection ready
DOperation complete
💡 Hint
Check the 'Result' column in row with Step 3 in execution_table.
According to variable_tracker, when does indexStored become true?
AAfter Step 4
BAfter Step 3
CAfter Step 2
DAt Start
💡 Hint
Look at the 'indexStored' row and see when it changes to true.
If we change createIndex({ age: 1 }) to createIndex({ age: -1 }), what changes in the execution?
ACollection name changes
BIndex creation fails
CIndex is built in descending order
DNo index is created
💡 Hint
Refer to key_moments about the meaning of 1 and -1 in index specification.
Concept Snapshot
createIndex({field: order})
- Builds an index on 'field'
- order: 1 for ascending, -1 for descending
- Speeds up queries filtering or sorting by that field
- Index creation scans all documents
- Index ready after creation completes
Full Transcript
The createIndex method in MongoDB builds an index on specified fields of a collection. You call createIndex on a collection with a specification object like { age: 1 } where 1 means ascending order. MongoDB scans all documents in the collection and creates index entries for the specified field. After building and storing the index, queries that filter or sort by that field become faster. The process involves starting with the collection, calling createIndex, building the index structure, storing it, and then using it for queries. Variables like the collection name, index specification, index entries, and index storage status change step-by-step during execution. Understanding the meaning of 1 and -1 for index order and knowing that the index is only usable after creation finishes are key points. This visual trace helps beginners see how createIndex works internally and when it affects query performance.

Practice

(1/5)
1. What is the main purpose of the createIndex method in MongoDB?
easy
A. To speed up queries by creating an index on a field
B. To delete documents from a collection
C. To update multiple documents at once
D. To create a new collection

Solution

  1. Step 1: Understand what createIndex does

    The createIndex method organizes data to make searches faster.
  2. Step 2: Identify the correct purpose

    It does not delete or update documents, nor create collections, only speeds up queries.
  3. Final Answer:

    To speed up queries by creating an index on a field -> Option A
  4. Quick Check:

    createIndex speeds up queries [OK]
Hint: Remember: createIndex speeds up searches, not data changes [OK]
Common Mistakes:
  • Confusing createIndex with delete or update operations
  • Thinking createIndex creates collections
  • Assuming createIndex modifies documents
2. Which of the following is the correct syntax to create an ascending index on the field age in MongoDB?
easy
A. db.collection.createIndex({ age: 1 })
B. db.collection.createIndex(age: 1)
C. db.collection.createIndex({ age: -1 })
D. db.collection.createIndex({ age })

Solution

  1. Step 1: Recall syntax for createIndex

    The method requires an object with field names as keys and 1 or -1 as values for ascending or descending.
  2. Step 2: Identify correct ascending index syntax

    { age: 1 } means ascending index on age. Other options are either descending (-1) or invalid syntax.
  3. Final Answer:

    db.collection.createIndex({ age: 1 }) -> Option A
  4. Quick Check:

    Ascending index uses 1 [OK]
Hint: Use 1 for ascending, -1 for descending in createIndex [OK]
Common Mistakes:
  • Using -1 for ascending index
  • Missing curly braces around field and order
  • Passing field without object braces
3. Given the command db.users.createIndex({ email: 1 }, { unique: true }), what will happen if you try to insert two documents with the same email value?
medium
A. The index will be ignored and duplicates allowed
B. Both documents will be inserted without error
C. The second insert will fail due to duplicate key error
D. MongoDB will automatically update the first document

Solution

  1. Step 1: Understand unique index effect

    Unique index prevents duplicate values in the indexed field.
  2. Step 2: Predict behavior on duplicate insert

    Inserting a duplicate email will cause an error and reject the second insert.
  3. Final Answer:

    The second insert will fail due to duplicate key error -> Option C
  4. Quick Check:

    Unique index blocks duplicates [OK]
Hint: Unique index stops duplicate values in that field [OK]
Common Mistakes:
  • Assuming duplicates are allowed with unique index
  • Thinking MongoDB auto-updates duplicates
  • Believing index is ignored on duplicates
4. What is wrong with this command? db.products.createIndex({ price: 'ascending' })
medium
A. The field name must be a string
B. The collection name is missing
C. createIndex cannot be used on numeric fields
D. The index order must be 1 or -1, not 'ascending'

Solution

  1. Step 1: Check index order values

    MongoDB requires 1 for ascending or -1 for descending, not strings like 'ascending'.
  2. Step 2: Identify error cause

    Using 'ascending' causes syntax error because it's not a valid order value.
  3. Final Answer:

    The index order must be 1 or -1, not 'ascending' -> Option D
  4. Quick Check:

    Index order must be 1 or -1 [OK]
Hint: Use 1 or -1 for index order, not words [OK]
Common Mistakes:
  • Using string values instead of 1 or -1
  • Thinking createIndex can't index numbers
  • Confusing collection name with index fields
5. You want to create a compound index on lastName (ascending) and age (descending) fields, ensuring no two documents have the same combination. Which command is correct?
hard
A. db.collection.createIndex({ lastName: -1, age: 1 }, { unique: false })
B. db.collection.createIndex({ lastName: 1, age: -1 }, { unique: true })
C. db.collection.createIndex({ lastName: 1, age: 1 }, { unique: true })
D. db.collection.createIndex({ lastName: 'asc', age: 'desc' }, { unique: true })

Solution

  1. Step 1: Understand compound index syntax

    Compound index uses an object with multiple fields and their order: 1 for ascending, -1 for descending.
  2. Step 2: Check uniqueness and order

    db.collection.createIndex({ lastName: 1, age: -1 }, { unique: true }) matches ascending lastName (1), descending age (-1), and unique true to prevent duplicates.
  3. Step 3: Verify other options

    db.collection.createIndex({ lastName: -1, age: 1 }, { unique: false }) reverses order and is not unique; C uses ascending age instead of descending; D uses invalid string values.
  4. Final Answer:

    db.collection.createIndex({ lastName: 1, age: -1 }, { unique: true }) -> Option B
  5. Quick Check:

    Compound unique index uses correct order and unique:true [OK]
Hint: Use 1/-1 for order and unique:true for no duplicates [OK]
Common Mistakes:
  • Using strings 'asc'/'desc' instead of 1/-1
  • Setting unique:false when uniqueness is needed
  • Mixing ascending and descending order incorrectly
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