Amazon dynamodb 带Lambda的DynamoDB查询(node.js):不支持查询键条件

Amazon dynamodb 带Lambda的DynamoDB查询(node.js):不支持查询键条件,amazon-dynamodb,aws-lambda,Amazon Dynamodb,Aws Lambda,我尝试从Lambda函数查询dynamoDB。我的表使用“id”作为散列键。我尝试了下面的两个版本,并收到了相应的错误消息。我做错了什么 var params = { TableName : "addresses", KeyConditionExpression: "id = :id AND city = :city", ExpressionAttributeValues: { ":id": "Austria",

我尝试从Lambda函数查询dynamoDB。我的表使用“id”作为散列键。我尝试了下面的两个版本,并收到了相应的错误消息。我做错了什么

  var params = {
        TableName : "addresses",
        KeyConditionExpression: "id = :id AND city = :city",
        ExpressionAttributeValues: {
            ":id": "Austria",
            ":city": "Salzburg"
        }
    };
无法查询。错误:{ “消息”:“不支持查询键条件”,…}

无法查询。错误:{ “消息”:“查询条件缺少关键架构元素:id”,…}

编辑:

我现在添加了二级索引,但仍然得到相同的错误:


如果哈希键为“id”,则无法通过以下方式进行查询:

KeyConditionExpression: "id = :id AND city = :city"
或通过:

KeyConditionExpression: "city = :city"
您只能通过哈希和范围键查询dynamodb

因此,您的查询应该始终包含哈希键(id)。如果您还想按“city”进行查询,则应将“city”作为范围键添加到dynamodb表(或本地二级索引)中

然后可以查询具有
'id'
'city'
的记录

更新:

如果要查询
“城市”

KeyConditionExpression: "city = :city"

然后,您可以将全局二级索引添加到表中。

查询KeyConditionExpression:“id=:id”有效吗?你有范围键吗?谢谢你的提示。我只是试着在没有城市条件的情况下只使用id,而且效果很好。如何添加附加条件?我不使用范围键我会回答它(获得+1:)您是否在查询中添加了“IndexName”:“city index”?谢谢。现在可以了。还有一种方法可以在indexName属性中指定多个索引。例如,我想查询城市、街道和门牌号吗?哇。那真是个倒霉蛋。这使得dynamodb对我来说几乎毫无用处。(例如查询街道地址)是。。并不总是推荐使用dynamodb。但您可以尝试考虑构建复合密钥。如果您的街道有代码,那么您的“城市”键可以是“NY-2”。然后你可以查询城市+street@EyalCh假设我们的数据库中有城市和州。id是散列键,city是范围键。如何使用城市和州条件进行查询?
KeyConditionExpression: "city = :city"