有人可以告诉我一个有效的关键条件表达式。我试图在一个名为MyKeyTable的简单表上运行查询。它有两个“列”,即Id和AnotherNumberThatICareAbout,类型为Long。
我希望看到我投入的所有价值观。所以我试过了:
aws dynamodb query --select ALL_ATTRIBUTES --table-name MyKeyTable
--endpoint http://localhost:8000
--key-condition-expression "WHAT DO I PUT IN HERE?"
我需要放入什么哈希?文档对这个imho有点蹩脚。任何帮助表示赞赏,即使它只是一个好文档的链接。
答案 0 :(得分:7)
这是一种只能使用命令行的方法,没有中间文件。
首先,使用值占位符来构造键条件表达式,例如
--key-condition-expression "Id = :idValue"
(不要忘记占位符的冒号前缀!)
接下来,构造一个expression-attribute-values参数。请注意,它需要JSON格式。我总是试图忘记的一个棘手的问题是你不能只为一个数字插入42或者#34; foo"一个字符串。您必须告诉DynamoDb 类型和值 。参考AWS docs有关如何格式化值规范的完整细分,如果需要,可能会非常复杂。
对于Windows,您可以通过将它们加倍来转义引号,例如
--expression-attribute-values "{"":idValue"":{""N"":""42""}}"
对于MacOS / Linux,JSON需要单引号:
--expression-attribute-values '{":idValue":{"N":"42"}}'
答案 1 :(得分:3)
创建一个包含密钥的文件:test.json
{
"yourHashKeyName": {"S": "abc"},
"YourRangeKey": {"S": "xyz"} //optional
}
运行
aws dynamodb query --table-name "your table name" --key-conditions file://test.json
参考:http://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html
扫描表格
aws dynamodb scan --table-name "you table name"
无需传递任何键,因为我们扫描整个表(注意:它将获得最大1MB的数据)
参阅:http://docs.aws.amazon.com/cli/latest/reference/dynamodb/scan.html