Bird
Raised Fist0
DynamoDBquery~10 mins

Expression attribute values in DynamoDB - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define an expression attribute value for a DynamoDB query.

DynamoDB
expression_attribute_values = {':val': [1]
Drag options to blanks, or click blank then click option'
AJohn
B:John
C"John"
D'John'
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to put quotes around string values.
Using single quotes instead of double quotes.
2fill in blank
medium

Complete the code to set a numeric expression attribute value for a DynamoDB update.

DynamoDB
expression_attribute_values = {':num': [1]
Drag options to blanks, or click blank then click option'
A"123"
B123
C'123'
D:123
Attempts:
3 left
💡 Hint
Common Mistakes
Putting numbers inside quotes, making them strings.
Adding colons inside the value.
3fill in blank
hard

Fix the error in the expression attribute values dictionary to correctly represent a boolean value.

DynamoDB
expression_attribute_values = {':active': [1]
Drag options to blanks, or click blank then click option'
A"true"
B"True"
Ctrue
DTrue
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase true without quotes (invalid in Python).
Using strings instead of boolean literals.
4fill in blank
hard

Fill both blanks to create expression attribute values for a string and a number.

DynamoDB
expression_attribute_values = {':name': [1], ':age': [2]
Drag options to blanks, or click blank then click option'
A"Alice"
B25
D'Alice'
Attempts:
3 left
💡 Hint
Common Mistakes
Using single quotes for strings.
Putting numbers inside quotes.
5fill in blank
hard

Fill all three blanks to define expression attribute values for a string, a boolean, and a number.

DynamoDB
expression_attribute_values = {':user': [1], ':isAdmin': [2], ':score': [3]
Drag options to blanks, or click blank then click option'
A"Bob"
BTrue
C100
D'Bob'
Attempts:
3 left
💡 Hint
Common Mistakes
Using single quotes for strings.
Using strings for booleans.
Putting numbers inside quotes.

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