Scan
The Scan operation returns one or more items and item attributes by
accessing every item in a table or a secondary index. To have DynamoDB return fewer
items, you can provide a FilterExpression operation.
If the total size of scanned items exceeds the maximum dataset size limit of 1 MB, the
scan completes and results are returned to the user. The LastEvaluatedKey
value is also returned and the requestor can use the LastEvaluatedKey to
continue the scan in a subsequent operation. Each scan response also includes number of
items that were scanned (ScannedCount) as part of the request. If using a
FilterExpression, a scan result can result in no items meeting the
criteria and the Count will result in zero. If you did not use a
FilterExpression in the scan request, then Count is the
same as ScannedCount.
Note
Count and ScannedCount only return the count of items
specific to a single scan request and, unless the table is less than 1MB, do not
represent the total number of items in the table.
A single Scan operation first reads up to the maximum number of items set
(if using the Limit parameter) or a maximum of 1 MB of data and then
applies any filtering to the results if a FilterExpression is provided. If
LastEvaluatedKey is present in the response, pagination is required to
complete the full table scan. For more information, see Paginating the
Results in the Amazon DynamoDB Developer Guide.
Scan operations proceed sequentially; however, for faster performance on
a large table or secondary index, applications can request a parallel Scan
operation by providing the Segment and TotalSegments
parameters. For more information, see Parallel
Scan in the Amazon DynamoDB Developer Guide.
By default, a Scan uses eventually consistent reads when accessing the
items in a table. Therefore, the results from an eventually consistent Scan
may not include the latest item changes at the time the scan iterates through each item
in the table. If you require a strongly consistent read of each item as the scan
iterates through the items in the table, you can set the ConsistentRead
parameter to true. Strong consistency only relates to the consistency of the read at the
item level.
Note
DynamoDB does not provide snapshot isolation for a scan operation when the
ConsistentRead parameter is set to true. Thus, a DynamoDB scan
operation does not guarantee that all reads in a scan see a consistent snapshot of
the table when the scan operation was requested.
Request Syntax
{
"AttributesToGet": [ "string" ],
"ConditionalOperator": "string",
"ConsistentRead": boolean,
"ExclusiveStartKey": {
"string" : {
"B": blob,
"BOOL": boolean,
"BS": [ blob ],
"L": [
"AttributeValue"
],
"M": {
"string" : "AttributeValue"
},
"N": "string",
"NS": [ "string" ],
"NULL": boolean,
"S": "string",
"SS": [ "string" ]
}
},
"ExpressionAttributeNames": {
"string" : "string"
},
"ExpressionAttributeValues": {
"string" : {
"B": blob,
"BOOL": boolean,
"BS": [ blob ],
"L": [
"AttributeValue"
],
"M": {
"string" : "AttributeValue"
},
"N": "string",
"NS": [ "string" ],
"NULL": boolean,
"S": "string",
"SS": [ "string" ]
}
},
"FilterExpression": "string",
"IndexName": "string",
"Limit": number,
"ProjectionExpression": "string",
"ReturnConsumedCapacity": "string",
"ScanFilter": {
"string" : {
"AttributeValueList": [
{
"B": blob,
"BOOL": boolean,
"BS": [ blob ],
"L": [
"AttributeValue"
],
"M": {
"string" : "AttributeValue"
},
"N": "string",
"NS": [ "string" ],
"NULL": boolean,
"S": "string",
"SS": [ "string" ]
}
],
"ComparisonOperator": "string"
}
},
"Segment": number,
"Select": "string",
"TableName": "string",
"TotalSegments": number
}
Request Parameters
The request accepts the following data in JSON format.
Note
In the following list, the required parameters are described first.
- TableName
-
The name of the table containing the requested items or if you provide
IndexName, the name of the table to which that index belongs.You can also provide the Amazon Resource Name (ARN) of the table in this parameter.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 1024.
Required: Yes
- AttributesToGet
-
This is a legacy parameter. Use
ProjectionExpressioninstead. For more information, see AttributesToGet in the Amazon DynamoDB Developer Guide.Type: Array of strings
Array Members: Minimum number of 1 item.
Length Constraints: Maximum length of 65535.
Required: No
- ConditionalOperator
-
This is a legacy parameter. Use
FilterExpressioninstead. For more information, see ConditionalOperator in the Amazon DynamoDB Developer Guide.Type: String
Valid Values:
AND | ORRequired: No
- ConsistentRead
-
A Boolean value that determines the read consistency model during the scan:
-
If
ConsistentReadisfalse, then the data returned fromScanmight not contain the results from other recently completed write operations (PutItem,UpdateItem, orDeleteItem). -
If
ConsistentReadistrue, then all of the write operations that completed before theScanbegan are guaranteed to be contained in theScanresponse.
The default setting for
ConsistentReadisfalse.The
ConsistentReadparameter is not supported on global secondary indexes. If you scan a global secondary index withConsistentReadset to true, you will receive aValidationException.Type: Boolean
Required: No
-
- ExclusiveStartKey
-
The primary key of the first item that this operation will evaluate. Use the value that was returned for
LastEvaluatedKeyin the previous operation.The data type for
ExclusiveStartKeymust be String, Number or Binary. No set data types are allowed.In a parallel scan, a
Scanrequest that includesExclusiveStartKeymust specify the same segment whose previousScanreturned the corresponding value ofLastEvaluatedKey.Type: String to AttributeValue object map
Key Length Constraints: Maximum length of 65535.
Required: No
- ExpressionAttributeNames
-
One or more substitution tokens for attribute names in an expression. The following are some use cases for using
ExpressionAttributeNames:-
To access an attribute whose name conflicts with a DynamoDB reserved word.
-
To create a placeholder for repeating occurrences of an attribute name in an expression.
-