如何在DynamoDB的ProjectionExpression中引用整数类型键?
DynamoDB ProjectionExpression访问数字键字典值的问题解决
问题描述
数据结构示例:
{ "PartitionKey": "foobar", "SomeDict": { "10": "a value", "20": "another value", ... } }
尝试通过ProjectionExpression仅读取SomeDict中键为10的值,执行以下查询代码:
get_item( Key={"PartitionKey": "foobar"}, ProjectionExpression="SomeDict.10" )
触发错误:
An error occurred (ValidationException) when calling the GetItem operation: Invalid ProjectionExpression: Syntax error; token: "10", near: ".10"
原因及解决方案
这不是功能限制,而是DynamoDB的ProjectionExpression语法规则要求:当属性名(或嵌套字典的键)以数字开头、包含特殊字符,或者与DynamoDB保留关键字冲突时,不能直接通过点号语法访问,必须使用**表达式属性名(ExpressionAttributeNames)**做映射转义。
修改后的正确代码:
get_item( Key={"PartitionKey": "foobar"}, ProjectionExpression="SomeDict.#key10", ExpressionAttributeNames={ "#key10": "10" } )
通过#key10作为占位符,在ExpressionAttributeNames中映射到实际的键名10,即可正确读取目标值。
内容的提问来源于stack exchange,提问作者Finch_Powers
相关产品推荐
相关产品推荐

