使用filter进行DynamoDB扫描

Im是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); }); 

如果您的应用程序将定期查询该类别,则应该查看全局二级索引 ( Global Secondary Indexes ,GSI),它允许您使用除原始散列键之外的另一个键生成数据的投影,作为可用于查询的键。

按照您的build议进行扫描和过滤不能很好地进行缩放,因为它会提取表格中的所有数据并仅对结果进行过滤。