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
Using SET Expression to Add or Change Attributes in DynamoDB
📖 Scenario: You are managing a DynamoDB table that stores information about books in a library. You want to update the details of a book by adding new attributes or changing existing ones.
🎯 Goal: Build a DynamoDB update expression using the SET keyword to add or change attributes of a book item.
📋 What You'll Learn
Create a dictionary called book_item with keys 'BookID', 'Title', and 'Author' with exact values.
Create a variable called update_expression that uses the SET keyword to add or change attributes.
Create a dictionary called expression_attribute_values with the exact keys and values used in the update expression.
Create a dictionary called update_params that includes the table name, key, update expression, and expression attribute values.
💡 Why This Matters
🌍 Real World
Updating items in DynamoDB tables is common when managing data for applications like libraries, inventories, or user profiles.
💼 Career
Knowing how to write update expressions with SET is essential for backend developers and database administrators working with AWS DynamoDB.
Progress0 / 4 steps
1
Create the initial book item dictionary
Create a dictionary called book_item with these exact entries: 'BookID': 'B1001', 'Title': 'Learn DynamoDB', and 'Author': 'Jane Doe'.
DynamoDB
Hint
Use curly braces {} to create a dictionary with the exact keys and values.
2
Create the update expression string
Create a variable called update_expression and set it to the string "SET Title = :new_title, Publisher = :publisher" to update the title and add a new attribute Publisher.
DynamoDB
Hint
The SET expression updates existing attributes or adds new ones. Use placeholders like :new_title.
3
Create the expression attribute values dictionary
Create a dictionary called expression_attribute_values with keys :new_title set to 'Mastering DynamoDB' and :publisher set to 'Tech Books Publishing'.
DynamoDB
Hint
Use a dictionary with keys matching the placeholders in the update expression and values as the new data.
4
Create the update parameters dictionary
Create a dictionary called update_params with keys: TableName set to 'Library', Key set to {'BookID': 'B1001'}, UpdateExpression set to update_expression, and ExpressionAttributeValues set to expression_attribute_values.
DynamoDB
Hint
Combine all parts into one dictionary to use in the DynamoDB update call.
Practice
(1/5)
1. What does the SET expression do in a DynamoDB UpdateItem operation?
easy
A. It creates a new table.
B. It adds new attributes or updates existing attributes in an item.
C. It retrieves items from the table.
D. It deletes attributes from an item.
Solution
Step 1: Understand the purpose of SET in UpdateItem
The SET expression is used to add new attributes or change existing ones in a DynamoDB item.
Step 2: Compare with other operations
Deleting attributes uses REMOVE, retrieving uses GetItem or Query, and creating tables uses CreateTable, not SET.
Final Answer:
It adds new attributes or updates existing attributes in an item. -> Option B
Quick Check:
SET expression = add or update attributes [OK]
Hint: SET means add or change attributes in DynamoDB [OK]
Common Mistakes:
Confusing SET with REMOVE for deleting attributes
Thinking SET retrieves data
Assuming SET creates tables
2. Which of the following is the correct syntax for a SET expression to update an attribute named age to 30?
easy
A. SET age == 30
B. SET age := 30
C. SET age -> 30
D. SET age = 30
Solution
Step 1: Recall correct SET syntax
In DynamoDB, the SET expression uses a single equals sign (=) to assign new values.
Step 2: Check each option
SET age = 30 uses 'SET age = 30' which is correct. Options A, B, and D use invalid operators for assignment.
Final Answer:
SET age = 30 -> Option D
Quick Check:
Assignment uses = in SET expression [OK]
Hint: Use single = for assignment in SET expression [OK]
Common Mistakes:
Using := or == instead of =
Using arrows or other symbols
Missing the SET keyword
3. Given the following UpdateItem call: UpdateExpression: "SET #n = :newName, age = age + :inc", ExpressionAttributeNames: {"#n": "name"}, ExpressionAttributeValues: {":newName": "Alice", ":inc": 1} What will be the effect on the item?
medium
A. The attribute 'name' is set to 'Alice' and 'age' is incremented by 1.
B. The attribute 'name' is set to ':newName' and 'age' is set to ':inc'.
C. The attribute 'name' is deleted and 'age' is unchanged.
D. Syntax error due to missing commas.
Solution
Step 1: Understand the UpdateExpression
The expression sets the attribute 'name' (aliased as #n) to the value ':newName' which is 'Alice'. It also increments 'age' by the value ':inc' which is 1.
Step 2: Confirm syntax and effect
The syntax is correct with commas separating updates. So, 'name' becomes 'Alice' and 'age' increases by 1.
Final Answer:
The attribute 'name' is set to 'Alice' and 'age' is incremented by 1. -> Option A
Quick Check:
SET updates multiple attributes correctly [OK]
Hint: Commas separate multiple SET updates; placeholders map values [OK]
Common Mistakes:
Confusing placeholders with literal strings
Missing commas between updates
Not using ExpressionAttributeNames for reserved words
4. Identify the error in this UpdateExpression: SET age = age + :inc newName = :bob
medium
A. Using double quotes inside expression values.
B. Incorrect use of colon before newName.
C. Missing comma between updates.
D. Using plus sign for addition is invalid.
Solution
Step 1: Analyze the UpdateExpression syntax
The expression tries to update 'age' and 'newName' but lacks a comma between the two updates.
Step 2: Check other syntax elements
Placeholders (:inc, :bob) are used correctly for values. Attribute names (age, newName) do not use colons. The plus sign is valid for numeric addition.
Final Answer:
Missing comma between updates. -> Option C
Quick Check:
Separate multiple SET updates with commas [OK]
Hint: Separate multiple SET updates with commas [OK]
Common Mistakes:
Omitting commas between attribute updates
Incorrectly placing colons before attribute names
Misplacing colons in attribute names
5. You want to update a DynamoDB item to set the attribute status to "active" only if it does not exist, and also increment loginCount by 1. Which UpdateExpression correctly does this?
hard
A. SET status = if_not_exists(status, :active), loginCount = loginCount + :inc
B. SET status = :active, loginCount = loginCount + 1 IF NOT EXISTS status
C. SET status = :active IF NOT EXISTS status, loginCount = loginCount + :inc
D. SET status = :active, loginCount = loginCount + :inc WHERE status = NULL
Solution
Step 1: Understand conditional setting with if_not_exists
The function if_not_exists(attribute, value) sets the attribute only if it does not exist, which matches the requirement for 'status'.
Step 2: Check increment syntax and placeholders
Incrementing 'loginCount' by ':inc' is correct. SET status = if_not_exists(status, :active), loginCount = loginCount + :inc uses placeholders properly and combines both updates in one SET expression.
Step 3: Evaluate other options
Options B, C, and D use invalid syntax like 'IF NOT EXISTS' outside functions or WHERE clauses which are not valid in UpdateExpression.
Final Answer:
SET status = if_not_exists(status, :active), loginCount = loginCount + :inc -> Option A
Quick Check:
Use if_not_exists() to set only if missing [OK]
Hint: Use if_not_exists() to set attribute only if missing [OK]
Common Mistakes:
Trying to use IF NOT EXISTS outside if_not_exists() function