Bird
Raised Fist0
DynamoDBquery~20 mins

Attribute types (S, N, B, BOOL, L, M) 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
🎖️
DynamoDB Attribute Types Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
1:30remaining
What is the output of this DynamoDB item retrieval?
Given a DynamoDB item with attribute types:

{"Name": {"S": "Alice"}, "Age": {"N": "30"}, "Active": {"BOOL": true}}

What will be the value of the "Age" attribute when retrieved?
A30 (number)
B"30" (string)
Ctrue (boolean)
Dnull (no value)
Attempts:
2 left
💡 Hint
Remember that DynamoDB stores numbers as strings in the N type.
query_result
intermediate
1:30remaining
What is the output of this DynamoDB item with nested map and list?
Consider this DynamoDB item:

{"User": {"M": {"Name": {"S": "Bob"}, "Scores": {"L": [{"N": "10"}, {"N": "20"}]}}}}

What is the value type of "Scores" inside "User"?
AMap of numbers
BList of numbers
CList of strings
DMap of strings
Attempts:
2 left
💡 Hint
Look at the L and N attribute types inside the Scores attribute.
📝 Syntax
advanced
2:00remaining
Which option correctly defines a DynamoDB item with a binary attribute?
You want to store a binary attribute named "ImageData" in DynamoDB. Which of the following JSON representations is syntactically correct?
A{"ImageData": {"B": "aGVsbG8="}}
B{"ImageData": {"N": "aGVsbG8="}}
C{"ImageData": {"S": "aGVsbG8="}}
D{"ImageData": {"BOOL": "aGVsbG8="}}
Attempts:
2 left
💡 Hint
Binary data uses the B attribute type and is base64 encoded.
🧠 Conceptual
advanced
1:00remaining
Which attribute type is best to store a true/false value in DynamoDB?
You want to store a flag indicating if a user is active or not. Which DynamoDB attribute type should you use?
AS (String)
BN (Number)
CB (Binary)
DBOOL (Boolean)
Attempts:
2 left
💡 Hint
DynamoDB has a dedicated type for true/false values.
🔧 Debug
expert
2:30remaining
Why does this DynamoDB query fail to retrieve the nested map attribute?
You have this item:

{"Profile": {"M": {"Name": {"S": "Eve"}, "Count": {"M": {"Age": {"N": "25"}}}}}}

You try to get the Age value with this expression:

ProjectionExpression: "Profile.Count.Age"

But the query returns no value for Age. What is the likely cause?
ADynamoDB does not support nested map attributes
BAge attribute is missing from the item
CProjectionExpression syntax requires using # placeholders for nested map keys
DProjectionExpression must use dot notation only for list attributes
Attempts:
2 left
💡 Hint
Check how DynamoDB handles nested attribute names in ProjectionExpression.

Practice

(1/5)
1.

Which DynamoDB attribute type is used to store plain text strings?

easy
A. B
B. N
C. BOOL
D. S

Solution

  1. Step 1: Understand attribute types in DynamoDB

    DynamoDB uses attribute types to define data kinds. 'S' stands for string (text).
  2. Step 2: Match the type to text data

    Since 'S' means string, it is the correct type for plain text.
  3. Final Answer:

    S -> Option D
  4. Quick Check:

    Text data = S [OK]
Hint: Text data always uses type S in DynamoDB [OK]
Common Mistakes:
  • Confusing N (number) with S (string)
  • Choosing BOOL for text
  • Using B for text data
2.

Which of the following is the correct syntax to define a boolean attribute named isActive in a DynamoDB item?

{"isActive": {"BOOL": true}}
easy
A. {"isActive": {"S": "true"}}
B. {"isActive": {"BOOL": true}}
C. {"isActive": {"N": 1}}
D. {"isActive": {"B": true}}

Solution

  1. Step 1: Identify the correct attribute type for boolean

    Boolean values in DynamoDB use the BOOL type with true or false.
  2. Step 2: Check the syntax for boolean attribute

    The correct syntax is {"isActive": {"BOOL": true}} to represent a boolean true.
  3. Final Answer:

    {"isActive": {"BOOL": true}} -> Option B
  4. Quick Check:

    Boolean attribute uses BOOL type [OK]
Hint: Use BOOL type with true/false for boolean values [OK]
Common Mistakes:
  • Using S type with string 'true'
  • Using N type with 1 instead of BOOL
  • Using B type for boolean
3.

Given the following DynamoDB item attribute, what is the type of tags?

{"tags": {"L": [ {"S": "red"}, {"S": "blue"}, {"S": "green"} ] }}
medium
A. List (L)
B. Map (M)
C. String (S)
D. Binary (B)

Solution

  1. Step 1: Identify the attribute type key

    The attribute uses the key "L", which stands for List in DynamoDB.
  2. Step 2: Understand the value structure

    The value is an array of strings, confirming it is a list of string elements.
  3. Final Answer:

    List (L) -> Option A
  4. Quick Check:

    Attribute key L means List [OK]
Hint: Look for L key to identify lists in DynamoDB [OK]
Common Mistakes:
  • Confusing L with M (map)
  • Thinking it's a string because of S inside list
  • Choosing B for binary data
4.

Identify the error in this DynamoDB attribute definition:

{"profile": {"M": {"age": {"S": 30}, "name": {"S": "Alice"}}}}
medium
A. The name attribute should use type N, not S
B. The map (M) type cannot contain nested attributes
C. The age attribute should use type N, not S
D. Binary (B) type is missing for profile

Solution

  1. Step 1: Analyze the attribute types inside the map

    The map contains "age" with type S and value 30, and "name" with type S and value "Alice".
  2. Step 2: Check if types match values

    Age is a number (30), so it should use type N, not S (string). Name is correctly a string.
  3. Final Answer:

    Age attribute should use type N, not S -> Option C
  4. Quick Check:

    Numbers use N type, not S [OK]
Hint: Numbers inside maps must use N type, not S [OK]
Common Mistakes:
  • Using S for numbers
  • Thinking maps can't nest attributes
  • Confusing name type as number
5.

You want to store a user's profile with a list of phone numbers and a map of address details in DynamoDB. Which attribute types should you use for phoneNumbers and address respectively?

hard
A. phoneNumbers: L, address: M
B. phoneNumbers: M, address: L
C. phoneNumbers: S, address: B
D. phoneNumbers: BOOL, address: N

Solution

  1. Step 1: Identify the type for a list of phone numbers

    A list of phone numbers is a collection, so it should use the List (L) type.
  2. Step 2: Identify the type for address details as key-value pairs

    Address details are structured data with keys and values, so Map (M) type is appropriate.
  3. Final Answer:

    phoneNumbers: L, address: M -> Option A
  4. Quick Check:

    Lists = L, Maps = M [OK]
Hint: Use L for lists, M for maps (objects) in DynamoDB [OK]
Common Mistakes:
  • Swapping L and M types
  • Using S for lists
  • Using BOOL or N incorrectly