iam试图在dynamodb中查询主键为时间戳的数据集。
首先,我想获取特定sensorId的所有数据。
我尝试了扫描(scan.json):
{
"sensorId": {
"AttributeValueList": [{
"S": "1234"
}],
"ComparisonOperator": "EQ"
}
}
此Json通过CLI命令使用:
aws dynamodb scan --table-name sensorData --scan-filter file://scan.json
这是成功的,并为我提供了指定sensorid的所有数据。
现在,如果我只想得到时间戳和传感器ID,那么我阅读了关于投影表达式的内容,并尝试进行查询(query.json):
{
":Id":{"S":"1234"}
}
aws cli命令
aws dynamodb query --table-name sensorData --key-condition-expression "sensorId= :Id" --expression-attribute-values file://query2.json --projection-expression "timestamp"
给了我:
调用查询时出错(ValidationException)
操作:无效的ProjectionExpression:属性名称是保留的
关键词;保留关键字:时间戳
但将“时间戳”替换为“用于测试的sensorId”给了我:
调用查询时出错(ValidationException)
操作:查询条件缺少关键架构元素:时间戳
我知道sensorId对key expression无效。。
KeyConditionExpression只接受键属性、哈希键和范围键。
但如何获得结果呢?
我只想要sensorId的时间戳。
我的Primarykey错了吗?最好使用sensorId作为主键,同时使用时间戳作为范围键?