带有value关键字的Dynamo DB扫描字段



我正试图根据名称中包含value的列表项的值来扫描dynamo数据库表。字段为

"TPMS.value": {
"L": [
{
"N": "0"
},
{
"N": "0"
},
{
"N": "0"
},
{
"N": "0"
}
]
}

我想得到TPMS.value[0] != 0的结果我试过

aws dynamodb scan 
--table-name afdcm-app-demo-Telemetry-Int_Table 
--filter-expression "TPMS.value[0] > :val"  
--expression-attribute-values '{":val":{"N":"0"}}'

但我一直得到Invalid FilterExpression: Attribute name is a reserved keyword; reserved keyword: value。有没有一种方法可以在字段名称包含value的情况下运行扫描?

必须使用--expression属性名称选项。根据文件(https://docs.aws.amazon.com/cli/latest/reference/dynamodb/scan.html):

表达式中属性名称的一个或多个替换标记。以下是使用ExpressionAttributeNames的一些用例:

  • 访问名称与DynamoDB保留字冲突的属性

  • 为在表达式中重复出现属性名称创建占位符。

  • 防止属性名称中的特殊字符在表达式中被误解。


因此,在您的情况下,命令应该类似于以下内容:

aws dynamodb scan --table-name afdcm-app-demo-Telemetry-Int_Table --filter-expression "#VAL[0] > :val" --expression-attribute-names '{"#VAL":"TPMS.value"}' --expression-attribute-values '{":val":{"N":"0"}}'

最新更新