Bird
Raised Fist0
DynamoDBquery~30 mins

Multiple actions in one update in DynamoDB - Mini Project: Build & Apply

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
Multiple Actions in One DynamoDB Update
📖 Scenario: You are managing a simple inventory system for a small store. Each product has a name, quantity in stock, and a list of tags describing the product.Sometimes, you need to update multiple things about a product at once: change the quantity, add a new tag, and update the last restock date.
🎯 Goal: Build a DynamoDB update expression that performs multiple actions in one update: increment the quantity, add a new tag to the tags list, and set the last restock date.
📋 What You'll Learn
Create an update expression that increments the quantity attribute by 10
Add a new tag "sale" to the tags list attribute
Set the last_restock attribute to the string "2024-06-01"
Use a single UpdateItem call with multiple actions in the update expression
💡 Why This Matters
🌍 Real World
In real inventory systems, updating multiple product attributes at once is common to keep data consistent and reduce the number of database calls.
💼 Career
Knowing how to write complex update expressions in DynamoDB is valuable for backend developers and database administrators working with AWS services.
Progress0 / 4 steps
1
Setup the initial item data
Create a dictionary called item representing a product with these exact attributes: product_id set to "P1001", quantity set to 50, tags set to a list containing "new" and "popular", and last_restock set to "2024-05-20".
DynamoDB
Hint

Use a Python dictionary with the exact keys and values as described.

2
Prepare the update expression components
Create a variable called update_expression and set it to the string that will increment quantity by 10, add "sale" to the tags list, and set last_restock to "2024-06-01" using DynamoDB update syntax with multiple actions separated by commas.
DynamoDB
Hint

Use SET with multiple actions separated by commas. Use list_append to add to the list.

3
Create the expression attribute values
Create a dictionary called expression_attribute_values with these exact keys and values: :inc set to 10, :new_tag set to a list containing "sale", and :date set to "2024-06-01".
DynamoDB
Hint

Use a dictionary with the exact keys and values as described.

4
Combine all parts into the final update call
Create a dictionary called update_params with these exact keys and values: Key set to a dictionary with product_id equal to "P1001", UpdateExpression set to the variable update_expression, and ExpressionAttributeValues set to the variable expression_attribute_values.
DynamoDB
Hint

Combine all parts into one dictionary for the update call.

Practice

(1/5)
1. In DynamoDB, which update action allows you to change or add new attributes to an item in a single update request?
easy
A. REMOVE
B. SET
C. ADD
D. DELETE

Solution

  1. Step 1: Understand update actions in DynamoDB

    DynamoDB update expressions use SET to add or modify attributes in an item.
  2. Step 2: Identify the correct action for adding or changing attributes

    SET is used to add new attributes or change existing ones in a single update request.
  3. Final Answer:

    SET -> Option B
  4. Quick Check:

    SET updates attributes [OK]
Hint: Use SET to add or change attributes in one update [OK]
Common Mistakes:
  • Confusing REMOVE with adding attributes
  • Using ADD to change non-numeric attributes
  • Thinking DELETE removes attributes instead of set elements
2. Which of the following is the correct syntax to update an attribute score by adding 10 in a DynamoDB update expression?
easy
A. DELETE score 10
B. SET score = score + 10
C. REMOVE score + 10
D. ADD score 10

Solution

  1. Step 1: Recall syntax for numeric increments in DynamoDB

    To increase a numeric attribute, DynamoDB uses ADD followed by the attribute and the value.
  2. Step 2: Match the correct syntax

    ADD score 10 correctly adds 10 to the existing score attribute.
  3. Final Answer:

    ADD score 10 -> Option D
  4. Quick Check:

    ADD increments numbers [OK]
Hint: Use ADD to increase numeric attributes in update [OK]
Common Mistakes:
  • Using SET with arithmetic expressions (not supported)
  • Using REMOVE or DELETE for numeric increments
  • Incorrect syntax like missing commas or keywords
3. Given the following update expression:
SET age = age + :inc REMOVE nickname ADD points :pts DELETE tags :oldTags
What will happen if the item initially has age = 30, nickname = 'Sam', points = 5, and tags = {'red', 'blue'} with :inc = 2, :pts = 3, and :oldTags = {'blue'}?
medium
A. age becomes 2, nickname removed, points become 8, tags become {'red', 'blue'}
B. age becomes 32, nickname removed, points become 3, tags become {'red', 'blue'}
C. age becomes 32, nickname removed, points become 8, tags become {'red'}
D. age becomes 32, nickname unchanged, points become 8, tags become {'red'}

Solution

  1. Step 1: Apply each update action to the initial item

    SET age = age + :inc adds 2 to 30 -> 32; REMOVE nickname deletes 'Sam'; ADD points :pts adds 3 to 5 -> 8; DELETE tags :oldTags removes 'blue' from {'red', 'blue'} -> {'red'}.
  2. Step 2: Confirm final attribute values

    age=32, nickname removed, points=8, tags={'red'} matches age becomes 32, nickname removed, points become 8, tags become {'red'}.
  3. Final Answer:

    age becomes 32, nickname removed, points become 8, tags become {'red'} -> Option C
  4. Quick Check:

    Multiple actions update all attributes correctly [OK]
Hint: Apply each action step-by-step to see final values [OK]
Common Mistakes:
  • Forgetting REMOVE deletes attribute
  • Confusing DELETE with REMOVE for sets
  • Misapplying ADD to sets instead of numbers
4. Identify the error in this DynamoDB update expression:
SET name = :n ADD age :a REMOVE points, DELETE tags :t
medium
A. Comma after REMOVE points is invalid syntax
B. ADD cannot be used with a non-numeric attribute like age
C. SET cannot assign a value using a placeholder like :n
D. REMOVE and DELETE cannot be used together in one update

Solution

  1. Step 1: Check syntax for multiple update actions

    REMOVE action lists attributes separated by spaces, not commas. The comma after points is invalid.
  2. Step 2: Validate other parts

    ADD can be used with numeric attributes; SET can use placeholders; REMOVE and DELETE can coexist.
  3. Final Answer:

    Comma after REMOVE points is invalid syntax -> Option A
  4. Quick Check:

    REMOVE uses spaces, not commas [OK]
Hint: Use spaces, not commas, to separate REMOVE attributes [OK]
Common Mistakes:
  • Using commas in REMOVE or DELETE lists
  • Assuming ADD works on non-numeric attributes
  • Thinking placeholders are not allowed in SET
5. You want to update a DynamoDB item to do all these in one update:
- Increase stock by 5
- Remove attribute discontinued
- Add newTag to a set attribute tags
Which update expression correctly performs all these actions?
hard
A. ADD stock :inc REMOVE discontinued ADD tags :newTag
B. SET stock = stock + :inc REMOVE discontinued ADD tags :newTag
C. ADD stock :inc REMOVE discontinued SET tags = tags + :newTag
D. SET stock = stock + :inc DELETE discontinued ADD tags :newTag

Solution

  1. Step 1: Choose correct action for increasing numeric attribute

    ADD stock :inc correctly increases numeric stock by :inc.
  2. Step 2: Remove attribute and add to set correctly

    REMOVE discontinued deletes the attribute; ADD tags :newTag adds elements to the set.
  3. Step 3: Verify syntax correctness

    ADD stock :inc REMOVE discontinued ADD tags :newTag uses ADD for numeric and set additions, REMOVE for attribute removal, all valid.
  4. Final Answer:

    ADD stock :inc REMOVE discontinued ADD tags :newTag -> Option A
  5. Quick Check:

    Use ADD for numbers and sets, REMOVE for attributes [OK]
Hint: Use ADD for numbers and sets, REMOVE for attributes [OK]
Common Mistakes:
  • Using SET with arithmetic expressions (not supported)
  • Using DELETE instead of REMOVE for attributes
  • Trying to add to sets with SET instead of ADD