什么是适用于CLI的DynamoDB有效键条件表达式

15

请问一个有效的键条件表达式是什么。我尝试在一个简单的名为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?"

我需要放什么哈希值?文档有点不太好理解。非常感谢您提供任何帮助,即使只是一个好的文档链接。

2个回答

12

以下是一种仅使用命令行的方法,无需使用中间文件。

首先,使用值占位符来构建您的键条件表达式,例如,

--key-condition-expression "Id = :idValue"

(别忘了占位符前缀需要加冒号!)

接下来,构建一个表达式-属性-值参数。请注意它需要 JSON 格式。我经常尝试忘记的棘手部分是,你不能只为数字插入 42 或字符串插入 "foo"。你必须告诉 DynamoDb类型和值。有关如何格式化值规范的完整细节,请参阅AWS 文档,如果需要,它可能非常复杂。

对于 Windows,你可以通过双倍引号来转义它们,例如,

--expression-attribute-values "{"":idValue"":{""N"":""42""}}"

对于 MacOS/Linux 系统,JSON 值需要使用单引号括起来:

--expression-attribute-values '{":idValue":{"N":"42"}}'

4
谢谢!使用单引号来包围 JSON 可能会使它更易于阅读:--expression-attribute-values '{":idValue":{"N":"42"}}' - Josh Vickery
1
嗯...绝对同意这更易读,但我刚试了一下准备更新这个答案,至少在Windows上它不喜欢它——在第一个双引号后就会中断。 - Rick Riensche
1
哦,糟糕,那是在OS X和Linux上的。 - Josh Vickery
单引号救了我。 - RNA

5
创建一个包含您的密钥的文件: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


MyHashKey - 将是您的哈希键值,这里我以字符串为参考,并且"abc"将是哈希键的值。 - Harshal Bulsara
在你的问题中,你提出了为什么我使用了那个的查询,我会更新我的问题以进行扫描。 - Harshal Bulsara
你可以使用scan,我已经更新了答案。 - Harshal Bulsara
谢谢,扫描确实给了我一些数据,但为了得到一个绿色的勾,我想知道如何让我的查询工作;-) - Mark Dickinson
--key 不是查询的有效参数。 - Mark Dickinson
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接