带值关键字的 Dynamodb 扫描字段
Dynamo DB Scan Field with value keyword
我正在尝试根据名称中包含 value
的列表项的值扫描发电机数据库 table。该字段是
"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-attribute-names 选项。根据文档 (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"}}'
我正在尝试根据名称中包含 value
的列表项的值扫描发电机数据库 table。该字段是
"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-attribute-names 选项。根据文档 (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"}}'