民间, 我有下表:
hashKey (model): RangeKey (make):
mustang ford
f150 ford
malibu chevy
...
我想做的是搜索并返回所有福特车型,即:
var params = {
TableName : 'models',
IndexName : 'make-index',
KeyConditions :
{
"make" :
{
"AttributeValueList" : [
{
"S" : 'ford'
}
],
"ComparisonOperator" : "EQ"
}
},
}
db.query(params, function(err, data) {
if (err) {
console.log (err)
callback(err, null)
} else {
callback(null, data.Items)
}
});
我做错了什么? :)谢谢!
答案 0 :(得分:2)
您是否设置了以make
作为索引哈希键的全局二级索引?您的查询告诉DynamoDB使用名为make-index
的索引,但从您的问题中不清楚该索引是否存在。
在DynamoDB中使用Query
操作的唯一方法是在哈希键上使用EQ
运算符。这可能是关于表上的哈希键,或者是全局二级索引上的哈希键,但是没有办法(没有全局二级索引)构造一个查询"给我所有的范围键为ford
的项目。"如果您将全局二级索引设置为使用make
作为哈希键,则可以执行您所描述的查询。
不幸的是,只能在创建表时创建索引。如果您在make
项目上没有全局二级索引,那么您可以通过Scan
操作完成此操作,但它不会像{{1}一样高效}}。
答案 1 :(得分:-1)
您可以在创建表后创建全局二级索引。转到amazon aws dynamodb控制台,单击表格并单击“创建索引”。
您可以通过在Google中输入“amazon aws”找到amazon aws控制台。