Bird
Raised Fist0
DynamoDBquery~20 mins

Expression attribute values in DynamoDB - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Expression Attribute Values Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
What is the output of this DynamoDB update expression?
Given a DynamoDB table with an item having id = 101 and attribute score = 50, what will be the new value of score after running this update?

UpdateExpression: "SET score = score + :inc"
ExpressionAttributeValues: {":inc": {"N": "20"}}
AThe score will be updated to 70
BThe score will be updated to 20
CThe update will fail due to missing attribute
DThe score will remain 50
Attempts:
2 left
💡 Hint
Remember that :inc is a placeholder for the value 20 used in the update expression.
📝 Syntax
intermediate
1:30remaining
Which ExpressionAttributeValues syntax is correct for a string value?
You want to update an attribute status to the string value active. Which of the following ExpressionAttributeValues is valid?
A{ ":val": { "BOOL": "active" } }
B{ ":val": "active" }
C{ ":val": { "N": "active" } }
D{ ":val": { "S": "active" } }
Attempts:
2 left
💡 Hint
DynamoDB expects data types like S for string, N for number, BOOL for boolean.
optimization
advanced
2:30remaining
How to efficiently update multiple attributes using ExpressionAttributeValues?
You want to update attributes age to 30 and city to "Seattle" in one update call. Which ExpressionAttributeValues and UpdateExpression combination is correct and efficient?
AUpdateExpression: "SET age = :a, city = :c"<br>ExpressionAttributeValues: {":a": {"N": "30"}, ":c": {"S": "Seattle"}}
BUpdateExpression: "SET age = 30, city = 'Seattle'"<br>ExpressionAttributeValues: {}
CUpdateExpression: "SET age = :age, city = :city"<br>ExpressionAttributeValues: {":age": 30, ":city": "Seattle"}
DUpdateExpression: "SET age = :a, city = :c"<br>ExpressionAttributeValues: {":a": 30, ":c": "Seattle"}
Attempts:
2 left
💡 Hint
ExpressionAttributeValues must specify data types for values.
🔧 Debug
advanced
2:00remaining
Why does this update fail with a ValidationException?
Given this update:

UpdateExpression: "SET name = :n"
ExpressionAttributeValues: {":n": {"N": "John"}}


Why does DynamoDB return a ValidationException error?
ABecause the placeholder ":n" is missing in the UpdateExpression
BBecause the data type "N" is used for a string value instead of "S"
CBecause the attribute name "name" is a reserved word and needs aliasing
DBecause ExpressionAttributeValues cannot contain nested objects
Attempts:
2 left
💡 Hint
Check the data type used for the value "John".
🧠 Conceptual
expert
3:00remaining
What is the purpose of ExpressionAttributeValues in DynamoDB operations?
Choose the best explanation for why ExpressionAttributeValues are used in DynamoDB queries and updates.
AThey store the results returned by DynamoDB after a query or scan operation
BThey define the schema of the table and enforce data types on attributes
CThey act as placeholders to safely substitute values in expressions, preventing injection and syntax errors
DThey are used to create indexes on attributes for faster querying
Attempts:
2 left
💡 Hint
Think about how placeholders help in writing safe and reusable expressions.

Practice

(1/5)
1. What is the main purpose of using ExpressionAttributeValues in DynamoDB queries?
easy
A. To safely provide values for query expressions and avoid reserved word conflicts
B. To define the table name for the query
C. To specify the index to use in the query
D. To set the read capacity units for the table

Solution

  1. Step 1: Understand ExpressionAttributeValues role

    ExpressionAttributeValues hold the actual values used in query expressions, replacing direct values with placeholders.
  2. Step 2: Recognize benefits

    This avoids errors from reserved words and injection issues by using placeholders like ':val'.
  3. Final Answer:

    To safely provide values for query expressions and avoid reserved word conflicts -> Option A
  4. Quick Check:

    ExpressionAttributeValues = safe value placeholders [OK]
Hint: Remember: ExpressionAttributeValues use :key placeholders [OK]
Common Mistakes:
  • Confusing ExpressionAttributeValues with table names
  • Using direct values instead of placeholders
  • Ignoring reserved word conflicts
2. Which of the following is the correct way to define an ExpressionAttributeValues dictionary for a value 25 with key ':age' in DynamoDB?
easy
A. { ':age' = 25 }
B. { 'age': 25 }
C. { ':age': 25 }
D. { ':age' : '25' }

Solution

  1. Step 1: Check syntax for ExpressionAttributeValues

    It must be a dictionary with keys starting with a colon and values as the actual data, e.g., { ':age': 25 }.
  2. Step 2: Validate each option

    { ':age': 25 } uses correct colon prefix and value type. { 'age': 25 } misses colon. { ':age' = 25 } uses '=' which is invalid syntax. { ':age' : '25' } uses string '25' instead of number.
  3. Final Answer:

    { ':age': 25 } -> Option C
  4. Quick Check:

    Use colon keys and proper dictionary syntax [OK]
Hint: Keys must start with ':' and use colon for key-value [OK]
Common Mistakes:
  • Omitting the colon prefix in keys
  • Using '=' instead of ':' in dictionary
  • Putting numbers as strings unnecessarily
3. Given the following DynamoDB query snippet, what will be the value of ExpressionAttributeValues to find items with Price less than 100?
FilterExpression: "Price < :maxPrice"
ExpressionAttributeValues: ???
medium
A. { ':maxPrice': 100 }
B. { 'maxPrice': 100 }
C. { ':maxPrice': '100' }
D. { ':maxPrice': 99 }

Solution

  1. Step 1: Match placeholder in FilterExpression

    The placeholder ':maxPrice' must be defined in ExpressionAttributeValues with the same key including colon.
  2. Step 2: Provide correct value type

    The value should be 100 as a number, not string, to match 'Price < :maxPrice'.
  3. Final Answer:

    { ':maxPrice': 100 } -> Option A
  4. Quick Check:

    Placeholder key with colon and numeric value [OK]
Hint: Match placeholder keys exactly with colon prefix [OK]
Common Mistakes:
  • Missing colon in key
  • Using string instead of number
  • Using wrong numeric value
4. You wrote this DynamoDB query snippet but it throws an error:
FilterExpression: "Quantity = :qty"
ExpressionAttributeValues: { 'qty': 10 }
What is the error and how to fix it?
medium
A. No error; code is correct
B. Value should be string; fix by changing to { ':qty': '10' }
C. FilterExpression syntax wrong; fix by removing colon
D. Missing colon in key; fix by changing to { ':qty': 10 }

Solution

  1. Step 1: Identify key mismatch

    The placeholder in FilterExpression is ':qty' but ExpressionAttributeValues uses 'qty' without colon, causing error.
  2. Step 2: Correct the key format

    Keys in ExpressionAttributeValues must start with colon, so change to { ':qty': 10 } to fix error.
  3. Final Answer:

    Missing colon in key; fix by changing to { ':qty': 10 } -> Option D
  4. Quick Check:

    Keys must match placeholders with colon [OK]
Hint: Keys must start with ':' matching FilterExpression placeholders [OK]
Common Mistakes:
  • Omitting colon in ExpressionAttributeValues keys
  • Changing value type unnecessarily
  • Misunderstanding FilterExpression syntax
5. You want to update an item in DynamoDB to set Status to "Active" only if the current Count is less than 5. Which ExpressionAttributeValues dictionary is correct for this conditional update?
UpdateExpression: "SET Status = :newStatus"
ConditionExpression: "Count < :maxCount"
ExpressionAttributeValues: ???
hard
A. { 'newStatus': 'Active', 'maxCount': 5 }
B. { ':newStatus': 'Active', ':maxCount': 5 }
C. { ':newStatus': 'Active', ':maxCount': '5' }
D. { ':newStatus': Active, ':maxCount': 5 }

Solution

  1. Step 1: Match all placeholders with colon keys

    Both ':newStatus' and ':maxCount' must be keys in ExpressionAttributeValues with colon prefix.
  2. Step 2: Use correct value types

    'Active' is a string, so use quotes. 5 is a number, so no quotes needed. { ':newStatus': 'Active', ':maxCount': 5 } matches this correctly.
  3. Final Answer:

    { ':newStatus': 'Active', ':maxCount': 5 } -> Option B
  4. Quick Check:

    Colon keys with correct string and number values [OK]
Hint: Use colon keys and correct types: strings in quotes, numbers as is [OK]
Common Mistakes:
  • Missing colon in keys
  • Using numbers as strings incorrectly
  • Omitting quotes around string values