amazon-dynamodb - 带有 value 关键字的 Dynamo DB 扫描字段
问题描述
我正在尝试根据value
名称中包含的列表项的值扫描 dynamo db 表。该领域是
"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"}}'
推荐阅读
- node.js - Nodejs:无法从 sftp 服务器下载文件
- css - Laravel 8 中的 Bootstrap V5 LTR 和 RTL
- neural-network - 焦点损失实施
- reactjs - 将选定的选项传递给父组件 - 反应
- ios - 使用 CABasicAnimation 缩放 CAShapeLayer 会导致它平移
- android - 我可以在我的 Flutter 应用中找到 Android 资源名称吗?
- go - GORM 逗号分隔值字段
- api - 尝试通过 API 创建付款时出错
- r - 将聚合函数应用于具有自定义输出名称的多个 data.table 列
- rust - 'cargo run' 和启动 .exe 文件之间的区别