The DELETE expression in DynamoDB helps you remove specific items from a set attribute without deleting the whole item.
You want to remove a specific tag from a list of tags stored as a set.
You need to update a user's preferences by removing some options from a set.
You want to delete a specific email from a set of email addresses in a record.
Syntax
DynamoDB
UPDATE table_name
SET attribute_name = attribute_name DELETE :values_to_remove
WHERE key_condition
The DELETE keyword here is used to remove elements from a set attribute.
:values_to_remove is a placeholder for the set of values you want to remove.
Examples
This removes specific colors from the favoriteColors set for the user with userId = :id.
DynamoDB
UPDATE Users
SET favoriteColors = favoriteColors DELETE :colorsToRemove
WHERE userId = :id
This removes certain tags from the tags set for a product.
DynamoDB
UPDATE Products
SET tags = tags DELETE :tagsToRemove
WHERE productId = :pid
Sample Program
This query removes specific genres from the genres set for the artist with the given artistId.
DynamoDB
UPDATE Music
SET genres = genres DELETE :removeGenres
WHERE artistId = :artistId
OutputSuccess
Important Notes
The DELETE expression only works on set attributes, not lists or other types.
If the value to remove does not exist in the set, DynamoDB ignores it without error.
Summary
Use DELETE expression to remove specific elements from a set attribute.
This helps update parts of your data without replacing the whole set.
Practice
(1/5)
1. What does the DELETE expression do in DynamoDB when used with a set attribute?
easy
A. Deletes the entire item from the table
B. Replaces the set attribute with a new set
C. Adds new elements to the set attribute
D. Removes specific elements from the set without deleting the entire attribute
Solution
Step 1: Understand DELETE expression purpose
The DELETE expression in DynamoDB is used to remove specific elements from a set attribute, not the whole attribute or item.
Step 2: Differentiate from other operations
Unlike DELETE for items or SET for adding, this expression targets only elements inside the set.
Final Answer:
Removes specific elements from the set without deleting the entire attribute -> Option D
Quick Check:
DELETE expression = remove elements from set [OK]
Hint: DELETE removes elements inside sets, not whole items [OK]
Common Mistakes:
Confusing DELETE expression with deleting entire item
Thinking DELETE adds elements instead of removing
Assuming DELETE replaces the whole set attribute
2. Which of the following is the correct syntax to remove the element 'blue' from a set attribute named colors using the DELETE expression in DynamoDB?
easy
A. UpdateExpression: "REMOVE colors :val", ExpressionAttributeValues: {":val": {"SS": ["blue"]}}
B. UpdateExpression: "DELETE colors :val", ExpressionAttributeValues: {":val": {"SS": ["blue"]}}
C. UpdateExpression: "DELETE colors :val", ExpressionAttributeValues: {":val": {"S": "blue"}}
A. Use string set (SS) type instead of string (S) for ExpressionAttributeValues
B. Change DELETE to REMOVE keyword in UpdateExpression
C. Remove the colon from :val in ExpressionAttributeValues
D. Use SET keyword instead of DELETE in UpdateExpression
Solution
Step 1: Identify data type mismatch
The attribute fruits is a set, so the value to delete must be a set type (SS), not a single string (S).
Step 2: Correct ExpressionAttributeValues type
Change {":val": {"S": "apple"}} to {":val": {"SS": ["apple"]}} to match set type.
Final Answer:
Use string set (SS) type instead of string (S) for ExpressionAttributeValues -> Option A
Quick Check:
Set removal requires SS type, not S [OK]
Hint: Use SS type for sets in ExpressionAttributeValues [OK]
Common Mistakes:
Using single string (S) instead of string set (SS)
Confusing DELETE with REMOVE keyword
Syntax errors from missing colons or wrong JSON format
5. You have a DynamoDB item with attribute features as a string set: {"wifi", "pool", "parking", "gym"}. You want to remove "pool" and "spa" from this set using a single update. Which is the correct approach and expected result?
hard
A. Use SET to assign a new set without "pool" and "spa"; result set is {"wifi", "parking", "gym"}
B. Use REMOVE with ExpressionAttributeValues {":vals": {"SS": ["pool", "spa"]}}; result set is {"wifi", "parking", "gym"}
C. Use DELETE with ExpressionAttributeValues {":vals": {"SS": ["pool", "spa"]}}; result set is {"wifi", "parking", "gym"}
D. Use DELETE with ExpressionAttributeValues {":vals": {"SS": ["pool", "spa"]}}; result set is {"wifi", "parking", "gym", "spa"}
Solution
Step 1: Choose correct update operation for set element removal
DELETE expression is used to remove specific elements from a set attribute.
Step 2: Understand effect of removing non-existing elements
Removing "pool" removes it from the set; "spa" does not exist, so it is ignored.
Step 3: Confirm final set value
After removal, the set is {"wifi", "parking", "gym"}.
Final Answer:
Use DELETE with ExpressionAttributeValues {":vals": {"SS": ["pool", "spa"]}}; result set is {"wifi", "parking", "gym"} -> Option C