What is the proper syntax to query database entries whose sort key starts with a specific string?
I believe it’s something along the lines of
const query_params = { TableName: 'my_table', Key: { my_primary_key: 'a_primary_key_value', }, FilterExpression: "my_sort_key begins_with :string", ExpressionAttributeValues: { ":string": "starts_with_substring" } };
Followed by a dynamoDb.get(query_params, ...
, but that is not quite right. I am getting an ValidationException: The provided key element does not match the schema
error.
Advertisement
Answer
According to the SDK query documentation, your query params should look like this
{ TableName: "my-table", KeyConditionExpression: "#pk= :pk And begins_with(#sk, :sk)", ExpressionAttributeValues: { ":pk": "a_primary_key_value", ":sk": "starts_with_substring" }, ExpressionAttributeNames: { "#pk": "my_primary_key", "#sk": "my_sort_key" } }
You’ll also need to change dynamoDb.get()
to dynamoDb.query()
.