Chris
Chris

Reputation: 14198

DynamoDB query with Lambda (node.js): Query key condition not supported

I try to query my dynamoDB from a Lambda function. My table uses "id" as the hash key. I tried both versions below and received the corresponding error messages. What am I doing wrong?

  var params = {
        TableName : "addresses",
        KeyConditionExpression: "id = :id AND city = :city",
        ExpressionAttributeValues: {
            ":id": "Austria",
            ":city": "Salzburg"
        }
    };

Unable to query. Error: { "message": "Query key condition not supported",...}

var params = {
    TableName : "addresses",
    KeyConditionExpression: "city = :city",
    ExpressionAttributeValues: {
        ":city": "Salzburg"
    }
};

Unable to query. Error: { "message": "Query condition missed key schema element: id",...}

EDIT:

I now added secondary indices, but still get the same errors:

enter image description here

Upvotes: 10

Views: 13220

Answers (1)

Eyal Ch
Eyal Ch

Reputation: 10056

if your hash key is 'id' then you cant query by:

KeyConditionExpression: "id = :id AND city = :city"

or by:

KeyConditionExpression: "city = :city"

you can query dynamodb only by hash and range key.

so your query should contain always hash key (id). if you want to query by 'city' also, you should add 'city' as range key to dynamodb table (or local secondary index)

then you can query for a record with 'id' and 'city'.

update:

if you want to query for 'city'

KeyConditionExpression: "city = :city"

then you can just add global secondary index to the table.

Upvotes: 13

Related Questions