Introduction
You use sort key conditions to find specific items in a group, making your search faster and more focused.
Jump into concepts and practice - no test required
Query {
KeyConditionExpression: "PartitionKeyName = :pkval AND SortKeyName operator :skval",
ExpressionAttributeValues: {
":pkval": {S: "partition_key_value"},
":skval": {S: "sort_key_value"} // or {N: "sort_key_value"}
}
}KeyConditionExpression: "UserId = :uid AND CreatedAt > :date" ExpressionAttributeValues: { ":uid": {S: "user123"}, ":date": {S: "2023-01-01T00:00:00Z"} }
KeyConditionExpression: "Category = :cat AND Price BETWEEN :min AND :max" ExpressionAttributeValues: { ":cat": {S: "Books"}, ":min": {N: "10"}, ":max": {N: "50"} }
KeyConditionExpression: "ChatId = :cid AND begins_with(MessageId, :prefix)" ExpressionAttributeValues: { ":cid": {S: "chat789"}, ":prefix": {S: "msg2023"} }
const AWS = require('aws-sdk'); const dynamodb = new AWS.DynamoDB.DocumentClient(); const params = { TableName: 'Orders', KeyConditionExpression: 'CustomerId = :cid AND OrderDate >= :startDate', ExpressionAttributeValues: { ':cid': 'cust123', ':startDate': '2023-01-01' } }; dynamodb.query(params, (err, data) => { if (err) { console.error('Error querying:', err); } else { console.log('Orders:', data.Items); } });
Query operation with a sort key condition, which of the following is always required?Timestamp is greater than 1000?UserID and sort key OrderDate, what will the following query return?KeyConditionExpression: 'UserID = :uid AND OrderDate BETWEEN :start AND :end'
ExpressionAttributeValues: { ':uid': 'user123', ':start': '2023-01-01', ':end': '2023-01-31' }KeyConditionExpression: 'UserID = :uid AND OrderDate > :date'
ExpressionAttributeValues: { ':uid': 'user123', ':date': '2023-12-31' }CustomerID and sort key InvoiceDate. You need to find all invoices for CustomerID = 'C123' where InvoiceDate is either before '2023-01-01' or after '2023-12-31'. Which approach correctly achieves this?