Amazon dynamodb dynamodb时间戳保留名称表达式属性名称
DynamoDb表格结构:Amazon dynamodb dynamodb时间戳保留名称表达式属性名称,amazon-dynamodb,Amazon Dynamodb,DynamoDb表格结构: Primary key: userId, Sort key: timestamp 我创建了这个查询: aws dynamodb query \ --table-name QAClusteredData \ --key-condition-expression 'userId= :user_id AND timestamp BETWEEN :t1 AND :t2' \ --expression-attribute-values '{
Primary key: userId, Sort key: timestamp
我创建了这个查询:
aws dynamodb query \
--table-name QAClusteredData \
--key-condition-expression 'userId= :user_id AND timestamp BETWEEN :t1 AND :t2' \
--expression-attribute-values '{
":user_id": {"S": "ec2e598f-cff8-4648-a120-3baf18e5102c"},
":t1": {"S": "1550481826"},
":t2": {"S": "1550662412"}
}' \
--region us-east-1
接收到:“调用查询操作时发生错误(ValidationException):无效的KeyConditionExpression:属性名称是保留关键字;保留关键字:时间戳”
尝试:
aws dynamodb query \
--table-name QAClusteredData \
--key-condition-expression 'userId= :user_id AND timestamp BETWEEN :t1 AND :t2' \
--expression-attribute-names '{"#ts":"timestamp"}' \
--expression-attribute-values '{
":user_id": {"S": "ec2e598f-cff8-4648-a120-3baf18e5102c"},
":t1": {"S": "1550481826"},
":t2": {"S": "1550662412"}
}' \
--region us-east-1
仍然会出现相同的错误,有什么建议吗?您的代码包含一个禁止的关键字:
:user\u id和时间戳介于:t1和:t2'
timestamp
是DynamoDB中的保留字。下面是DynamoDB中保留的关键字列表:我的坏
必须将#ts放在:t1和:t2之间
而不是时间戳放在:t1和:t2之间
完整查询:
aws dynamodb query \
--table-name QAClusteredData \
--key-condition-expression 'userId= :user_id AND #ts BETWEEN :t1 AND :t2' \
--expression-attribute-names '{"#ts":"timestamp"}' \
--expression-attribute-values '{
":user_id": {"S": "ec2e598f-cff8-4648-a120-3baf18e5102c"},
":t1": {"S": "1550481826"},
":t2": {"S": "1550662412"}
}' \
--region us-east-1
您仍然可以使用--expression属性namesThank,my bad来使用保留字。没错,文档中对此进行了解释:
如果需要编写一个表达式,其中包含与DynamoDB保留字冲突的属性名,则可以定义一个表达式属性名来代替保留字。有关详细信息,请参见表达式属性名称代码>