Samuel Goldenbaum
Samuel Goldenbaum

Reputation: 18939

How to query a table by using IN conditions in DynamoDB

Struggling to find an example of how to query a table to return rows with ids from a given list.

The query below throws on the inclusion of IN

var params = {
            id: '7deb3df9-552b-47a4-aef3-ad601f141d50'
        };

        var p = {
            TableName: 'players',
            KeyConditionExpression: 'id IN (:id)',
            ExpressionAttributeValues: buildQuery(params)
        };

Upvotes: 1

Views: 194

Answers (1)

xtx
xtx

Reputation: 4456

You can't use "IN" operator with KeyConditionExpression, please see details in this SO question

You may want to use batchGetItem instead of query, which is not so efficient though.

Here is how your params could look like:

var params = {
    RequestItems: {
      'players': {
        Keys: [{
          id: "7deb3df9-552b-47a4-aef3-ad601f141d50",
          rangeKey: "<range key 1>" // <--- if your table has a range key, you must specify its value here
        }, {
          id: "<ANOTHER ID 2>",
          rangeKey: "<range key 2>"
        }, {
          id: "<ANOTHER ID 3>",
          rangeKey: "<range key 3>"
        }]
      }
    } 
};
dynamodbDoc.batchGet(params, function(err, data) {

});

Upvotes: 1

Related Questions