使用过滤器进行DynamoDB扫描

时间:2017-08-13 10:13:28

标签: node.js amazon-dynamodb

我是DynamoDB的新用户,并且有一个表格是" feeds"和分区键是" id"我有3个其他属性," category"," description"," pubDate"。

我想查询"类别"属性。但它不起作用,因为我只能查询分区键(hashkey),如果我正确的话。

现在我的查询是不起作用的;

let category = event.category;

    const params = {
        Key: {
            "category": {
                S: category
            }
        },
        TableName: "feeds"
    };
    dynamodb.getItem(params, function (err, data) {
        if (err) {
            console.log(err);
            callback(err);
        }
        else {
            console.log(data);
            callback(null, data);
        }
    });

我怎样才能让它发挥作用?我尝试编写扫描查询,但我无法理解AWS的文档。

编辑:我确实在Dunedan的帮助下完成了它。这是工作代码,

var params = {
      TableName: 'feeds',
      IndexName: 'category-index',
      KeyConditionExpression: 'category = :category',
      ExpressionAttributeValues: {
        ':category': 'backup',
      }
    };

    var docClient = new AWS.DynamoDB.DocumentClient();

    docClient.query(params, function(err, data) {
       if (err) callback(err);
       else callback(null, data);
    });

1 个答案:

答案 0 :(得分:1)

如果您的应用程序会定期查询该类别,您应该查看Global Secondary Indexes(GSI),它允许您使用除原始哈希键之外的其他键生成数据投影,作为您可以使用的密钥查询。

按照您的建议扫描和过滤并不能很好地扩展,因为它会获取表格中的所有数据并只过滤结果。