Bird
Raised Fist0
DynamoDBquery~20 mins

Basic scan operation 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 Scan Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
What does this DynamoDB scan return?
Consider a DynamoDB table named Books with items having attributes Title and Author. The following scan operation is executed:
ScanInput = { TableName: "Books" }
What will be the output of this scan?
DynamoDB
const params = { TableName: "Books" };
const result = await dynamodb.scan(params).promise();
return result.Items;
AOnly the first 10 items are returned by default.
BOnly items with attribute Author = 'Unknown' are returned.
CNo items are returned because no filter is specified.
DAll items in the Books table are returned.
Attempts:
2 left
💡 Hint
A scan without filters returns all items in the table.
query_result
intermediate
2:00remaining
What is the output of this filtered scan?
Given a DynamoDB table Users with attribute Age, the following scan is run:
ScanInput = {
  TableName: "Users",
  FilterExpression: "Age > :minAge",
  ExpressionAttributeValues: { ":minAge": 30 }
}
What does this scan return?
DynamoDB
const params = {
  TableName: "Users",
  FilterExpression: "Age > :minAge",
  ExpressionAttributeValues: { ":minAge": 30 }
};
const result = await dynamodb.scan(params).promise();
return result.Items;
AAll users with Age greater than 30 are returned.
BAll users are returned because FilterExpression is ignored in scan.
COnly users with Age exactly 30 are returned.
DScan returns an error due to invalid FilterExpression syntax.
Attempts:
2 left
💡 Hint
FilterExpression filters items after scanning all.
📝 Syntax
advanced
2:00remaining
Which scan parameter causes a syntax error?
Identify which of the following scan parameter objects will cause a syntax error when used in DynamoDB scan operation.
A{ TableName: "Orders", FilterExpression: "Price > :p", ExpressionAttributeValues: { ":p": 100 } }
B{ TableName: "Orders", FilterExpression: "Price > :p", ExpressionAttributeValues: { ":p" 100 } }
C{ TableName: "Orders", Limit: 5 }
D{ TableName: "Orders" }
Attempts:
2 left
💡 Hint
Check for missing colon or comma in object literals.
optimization
advanced
2:00remaining
How to optimize a scan to reduce read capacity usage?
You want to scan a large DynamoDB table but reduce the read capacity units consumed. Which option below helps achieve this?
AUse FilterExpression to reduce items scanned.
BUse ScanIndexForward to scan in ascending order.
CUse ProjectionExpression to return only needed attributes.
DUse ConsistentRead set to true.
Attempts:
2 left
💡 Hint
Returning fewer attributes reduces data read.
🔧 Debug
expert
2:00remaining
Why does this scan return fewer items than expected?
A DynamoDB scan on table Products uses the following parameters:
{ TableName: "Products", Limit: 5 }
After running the scan, only 3 items are returned, but the table has 10 items. Why?
AScan Limit limits the number of items returned, but if FilterExpression excludes some items, fewer are returned.
BScan Limit limits the number of items returned, but scan may return fewer if fewer items are available in the segment.
CScan Limit limits the number of items returned, but scan may return fewer if the response is paginated and only first page is fetched.
DScan Limit limits the number of items evaluated, not the number returned after filtering.
Attempts:
2 left
💡 Hint
Consider if any filtering is applied after scan.

Practice

(1/5)
1. What does the scan operation do in DynamoDB?
easy
A. Reads all items in a table
B. Reads only one item by key
C. Deletes items from a table
D. Updates items in a table

Solution

  1. Step 1: Understand the scan operation

    The scan operation reads every item in the DynamoDB table without filtering by key.
  2. Step 2: Compare with other operations

    Unlike get or query, scan reads all items, not just specific keys.
  3. Final Answer:

    Reads all items in a table -> Option A
  4. Quick Check:

    Scan = Reads all items [OK]
Hint: Scan reads entire table, not just keys [OK]
Common Mistakes:
  • Confusing scan with get or query
  • Thinking scan deletes or updates data
  • Assuming scan reads only filtered items
2. Which of the following is the correct syntax to perform a scan operation using AWS SDK for JavaScript v3?
easy
A. const data = await client.get({ TableName: 'MyTable' });
B. const data = await client.query({ TableName: 'MyTable' });
C. const data = await client.scan({ TableName: 'MyTable' });
D. const data = await client.delete({ TableName: 'MyTable' });

Solution

  1. Step 1: Identify scan method usage

    The scan method is called on the DynamoDB client with parameters including TableName.
  2. Step 2: Check other methods

    Get, query, and delete are different operations and do not perform scan.
  3. Final Answer:

    const data = await client.scan({ TableName: 'MyTable' }); -> Option C
  4. Quick Check:

    Scan syntax uses client.scan() [OK]
Hint: Scan uses client.scan() with TableName [OK]
Common Mistakes:
  • Using get or query instead of scan
  • Missing await keyword
  • Wrong method names like delete
3. Given a DynamoDB table with 3 items: {id:1, name:'A'}, {id:2, name:'B'}, {id:3, name:'C'}, what will the scan operation return?
medium
A. [{id:1, name:'A'}, {id:2, name:'B'}, {id:3, name:'C'}]
B. Error: No items found
C. []
D. [{id:1, name:'A'}]

Solution

  1. Step 1: Understand scan returns all items

    Scan reads every item in the table, so all 3 items will be returned.
  2. Step 2: Check options for completeness

    Only [{id:1, name:'A'}, {id:2, name:'B'}, {id:3, name:'C'}] lists all 3 items; others are incomplete or errors.
  3. Final Answer:

    [{id:1, name:'A'}, {id:2, name:'B'}, {id:3, name:'C'}] -> Option A
  4. Quick Check:

    Scan returns all items [OK]
Hint: Scan returns full table items list [OK]
Common Mistakes:
  • Expecting scan to return only one item
  • Thinking scan returns empty if no filter
  • Confusing scan with query results
4. You wrote this code to scan a DynamoDB table but get no results:
const params = { TableName: 'MyTable', FilterExpression: 'age > :val', ExpressionAttributeValues: { ':val': 30 } };
const data = await client.scan(params);

What is the likely problem?
medium
A. TableName is missing in params
B. FilterExpression syntax is incorrect, causing scan to fail
C. Scan does not support FilterExpression
D. FilterExpression is applied after scan reads all items, so no items match age > 30

Solution

  1. Step 1: Understand FilterExpression in scan

    FilterExpression filters results after scanning all items; if no items match, result is empty.
  2. Step 2: Check syntax and params

    Syntax is correct, TableName is present, and scan supports FilterExpression.
  3. Final Answer:

    FilterExpression is applied after scan reads all items, so no items match age > 30 -> Option D
  4. Quick Check:

    FilterExpression filters after scan [OK]
Hint: FilterExpression filters after scan reads all items [OK]
Common Mistakes:
  • Thinking FilterExpression prevents scanning items
  • Assuming scan fails with FilterExpression
  • Missing TableName parameter
5. You want to scan a large DynamoDB table but only retrieve items where status is 'active'. Which approach is best to reduce data returned and improve performance?
hard
A. Use scan with FilterExpression 'status = :s' and ExpressionAttributeValues { ':s': 'active' }
B. Use query operation with status as partition key
C. Use scan without filters and filter results in application code
D. Use scan with ProjectionExpression to get only 'status' attribute

Solution

  1. Step 1: Understand scan vs query

    Scan reads entire table; query reads items by key, more efficient for filtering.
  2. Step 2: Check if status can be partition key

    If status is partition key, query can efficiently get only 'active' items without scanning all.
  3. Step 3: Evaluate other options

    FilterExpression filters after scan, so less efficient; filtering in app wastes bandwidth; ProjectionExpression only limits attributes, not items.
  4. Final Answer:

    Use query operation with status as partition key -> Option B
  5. Quick Check:

    Query with key filters efficiently [OK]
Hint: Query by key is faster than scan with filters [OK]
Common Mistakes:
  • Relying on scan with filters for large tables
  • Filtering data in application instead of query
  • Confusing ProjectionExpression with filtering items