使用 Lambda (node.js) 的 DynamoDB 查询:不支持查询关键条件

DynamoDB query with Lambda (node.js): Query key condition not supported

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

  var params = {
        TableName : "addresses",
        KeyConditionExpression: "id = :id AND city = :city",
        ExpressionAttributeValues: {
            ":id": "Austria",
            ":city": "Salzburg"
        }
    };

无法查询。错误: { "message": "Query key condition not supported",...}

var params = {
    TableName : "addresses",
    KeyConditionExpression: "city = :city",
    ExpressionAttributeValues: {
        ":city": "Salzburg"
    }
};

无法查询。错误: { "message": "Query condition missed key schema element: id",...}

编辑:

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

如果您的哈希键是 'id' 那么您不能通过以下方式查询:

KeyConditionExpression: "id = :id AND city = :city"

或通过:

KeyConditionExpression: "city = :city"

您只能通过哈希和范围键查询 dynamodb。

因此您的查询应始终包含散列键 (id)。如果你也想通过 'city' 查询,你应该将 'city' 作为范围键添加到 dynamodb table (或本地二级索引)

然后你可以用'id''city'查询记录。

更新:

如果你想查询'city'

KeyConditionExpression: "city = :city"

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