Bird
Raised Fist0
MongoDBquery~10 mins

$inc operator for incrementing in MongoDB - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - $inc operator for incrementing
Start with document
Apply $inc operator
Find field to increment
Add increment value to field
Update document with new value
Return updated document
The $inc operator finds a field in a document and adds a number to it, updating the document with the new value.
Execution Sample
MongoDB
db.inventory.updateOne(
  { item: "apple" },
  { $inc: { quantity: 5 } }
)
This command finds the document where item is 'apple' and adds 5 to its quantity field.
Execution Table
StepDocument BeforeOperationFieldIncrement ValueDocument After
1{ item: "apple", quantity: 10 }Find documentN/AN/A{ item: "apple", quantity: 10 }
2{ item: "apple", quantity: 10 }Apply $incquantity5{ item: "apple", quantity: 15 }
3{ item: "apple", quantity: 15 }Update documentquantityN/A{ item: "apple", quantity: 15 }
💡 Update complete, quantity incremented from 10 to 15
Variable Tracker
VariableStartAfter Step 1After Step 2Final
quantity10101515
Key Moments - 2 Insights
What happens if the field to increment does not exist in the document?
If the field does not exist, $inc creates the field and sets it to the increment value. This is shown in the execution_table where the field is found or created before incrementing.
Can $inc be used to decrement a value?
Yes, by using a negative number as the increment value, $inc decreases the field's value. The execution_table would show the increment value as negative.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the quantity after step 2?
A15
B10
C5
D20
💡 Hint
Check the 'Document After' column in row for step 2 in execution_table.
At which step is the $inc operator applied?
AStep 1
BStep 3
CStep 2
DNo step applies $inc
💡 Hint
Look at the 'Operation' column in execution_table to find when $inc is applied.
If the increment value was -3 instead of 5, what would be the quantity after step 2?
A13
B7
C15
D3
💡 Hint
Subtract 3 from the starting quantity 10 as shown in variable_tracker.
Concept Snapshot
$inc operator:
- Adds a number to a field's value in a document.
- If field missing, creates it with increment value.
- Use positive to increase, negative to decrease.
- Syntax: { $inc: { field: value } }
- Updates document atomically.
Full Transcript
The $inc operator in MongoDB updates a document by adding a specified number to a field's current value. If the field does not exist, it creates the field with that number. For example, if a document has quantity 10 and we apply $inc with 5, the quantity becomes 15. This operation is atomic and efficient for counters or numeric updates. Negative values decrease the field. The execution steps show finding the document, applying the increment, and updating the document with the new value.

Practice

(1/5)
1. What does the $inc operator do in MongoDB?
easy
A. It creates a new collection.
B. It increments or decrements the value of a numeric field.
C. It deletes a field from the document.
D. It replaces the entire document with a new one.

Solution

  1. Step 1: Understand the purpose of $inc

    The $inc operator is used to add or subtract a number from an existing numeric field in a document.
  2. Step 2: Compare with other options

    Replacing documents, deleting fields, or creating collections are not functions of $inc.
  3. Final Answer:

    It increments or decrements the value of a numeric field. -> Option B
  4. Quick Check:

    $inc changes numbers by adding/subtracting [OK]
Hint: Remember: $inc changes numbers, not documents [OK]
Common Mistakes:
  • Thinking $inc replaces the whole document
  • Confusing $inc with delete or create operations
  • Assuming $inc works on non-numeric fields
2. Which of the following is the correct syntax to increment the field score by 5 in MongoDB?
easy
A. { $inc: { score: '5' } }
B. { $inc: { score: '+5' } }
C. { $inc: { 'score': 'five' } }
D. { $inc: { score: 5 } }

Solution

  1. Step 1: Check the value type for $inc

    The value to increment must be a number, not a string or word.
  2. Step 2: Validate syntax correctness

    { $inc: { score: 5 } } uses a number 5 correctly. { $inc: { score: '5' } } uses a string '5', which is invalid. { $inc: { 'score': 'five' } } uses a word 'five', invalid. { $inc: { score: '+5' } } uses a string '+5', invalid.
  3. Final Answer:

    { $inc: { score: 5 } } -> Option D
  4. Quick Check:

    Use number values with $inc [OK]
Hint: Use numeric values without quotes for $inc [OK]
Common Mistakes:
  • Using strings instead of numbers for increment values
  • Adding plus sign (+) inside JSON value
  • Using words instead of numeric literals
3. Given a document { _id: 1, count: 10 }, what will be the document after running db.collection.updateOne({ _id: 1 }, { $inc: { count: -3 } })?
medium
A. { _id: 1, count: -3 }
B. { _id: 1, count: 13 }
C. { _id: 1, count: 7 }
D. { _id: 1, count: 10 }

Solution

  1. Step 1: Understand the initial document

    The document has count equal to 10.
  2. Step 2: Apply the $inc operation with -3

    Subtract 3 from 10: 10 - 3 = 7.
  3. Final Answer:

    { _id: 1, count: 7 } -> Option C
  4. Quick Check:

    10 + (-3) = 7 [OK]
Hint: Subtract by using negative numbers with $inc [OK]
Common Mistakes:
  • Adding instead of subtracting when using negative values
  • Replacing the whole document instead of updating
  • Assuming $inc only increments, not decrements
4. You run this update: db.collection.updateOne({ _id: 2 }, { $inc: { visits: 1 } }) but get an error. What is the most likely cause?
medium
A. The visits field is a string, not a number.
B. The _id field is missing in the query.
C. The $inc operator cannot increment by 1.
D. The collection does not exist.

Solution

  1. Step 1: Understand $inc requirements

    $inc only works on numeric fields. If visits is a string, it causes an error.
  2. Step 2: Check other options

    Missing _id would not cause this error if the document exists. $inc can increment by 1. Collection existence error would be different.
  3. Final Answer:

    The visits field is a string, not a number. -> Option A
  4. Quick Check:

    $inc needs numeric fields [OK]
Hint: Ensure field is numeric before using $inc [OK]
Common Mistakes:
  • Trying to increment string fields
  • Assuming $inc works on any data type
  • Ignoring error messages about field types
5. You want to increment the likes field by 1 for all documents where likes does not exist yet. Which update command will correctly do this without errors?
hard
A. db.collection.updateMany({ likes: { $exists: false } }, { $inc: { likes: 1 } })
B. db.collection.updateMany({}, { $inc: { likes: 1 } })
C. db.collection.updateMany({ likes: null }, { $inc: { likes: 1 } })
D. db.collection.updateMany({}, { $set: { likes: 1 } })

Solution

  1. Step 1: Identify documents without likes

    Use the query { likes: { $exists: false } } to find documents missing the likes field.
  2. Step 2: Use $inc to add 1 to likes

    $inc will create the field with value 1 if it does not exist, so this safely increments missing fields.
  3. Step 3: Check other options

    db.collection.updateMany({}, { $inc: { likes: 1 } }) increments all documents, including those with likes. db.collection.updateMany({ likes: null }, { $inc: { likes: 1 } }) matches documents where likes is null, not missing. db.collection.updateMany({}, { $set: { likes: 1 } }) sets likes to 1, not increments.
  4. Final Answer:

    db.collection.updateMany({ likes: { $exists: false } }, { $inc: { likes: 1 } }) -> Option A
  5. Quick Check:

    Increment missing fields with $exists: false filter [OK]
Hint: Filter missing fields with $exists: false before $inc [OK]
Common Mistakes:
  • Incrementing all documents without filtering
  • Using $set instead of $inc
  • Filtering with null instead of $exists: false