我是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);
});
答案 0 :(得分:1)
如果您的应用程序会定期查询该类别,您应该查看Global Secondary Indexes(GSI),它允许您使用除原始哈希键之外的其他键生成数据投影,作为您可以使用的密钥查询。
按照您的建议扫描和过滤并不能很好地扩展,因为它会获取表格中的所有数据并只过滤结果。