我试图在 dynamodb 中查询主键是时间戳的数据集。首先,我想获取特定 sensorId 的所有数据。我尝试了扫描(scan.json):
{
"sensorId": {
"AttributeValueList": [{
"S": "1234"
}],
"ComparisonOperator": "EQ"
}
}
这个 Json 是通过 CLI 命令使用的:
aws dynamodb scan --table-name sensorData --scan-filter file://scan.json
那是成功的,并为我提供了指定 sensorid 的所有数据。
现在,如果我只想获得时间戳和 sensorId 作为结果,我阅读了有关投影表达式并尝试进行查询(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):Invalid ProjectionExpression: Attribute name is a reserved keyword;保留关键字:时间戳
但是为了测试目的用“sensorId”替换“timestamp”给了我:
调用查询操作时发生错误(ValidationException):查询条件缺少键架构元素:时间戳
而且我知道 sensorId 对键表达式无效。 KeyConditionExpression 仅接受键属性、哈希键和范围键。但是如何得到结果呢?
我只想要一个 sensorId 的时间戳。我的主键错了吗?应该更好地使用 sensorId 作为主键和时间戳作为范围键?