2016-02-15 32 views
6

有人请告诉我什么是有效的关键条件表达式。我正在试图在一个名为MyKeyTable的简单表上运行查询。它有两个“列”,即Id和AnotherNumberThatICareAbout,它是Long类型的。什么是cli的有效dynamodb关键条件表达式

我想看看,我把所有的值,所以我尝试:

aws dynamodb query --select ALL_ATTRIBUTES --table-name MyKeyTable 
--endpoint http://localhost:8000 
--key-condition-expression "WHAT DO I PUT IN HERE?" 

我需要什么哈希投入?文档在这个imho上有点蹩脚。任何帮助的赞赏,即使它只是一个良好的文档的链接。

回答

2

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

+0

MyHashKey - 将你的散列键值,在这里我也作为字符串参考,“ABC”将是哈希键的值 –

+0

在你的问题中,你已经采取了查询,为什么我使用了,我会更新我的问题进行扫描以及 –

+0

为了您可以使用扫描,我已经更新了答案 –

4

这里有一个命令行,唯一的方法,你可以没有中间文件使用。

首先,利用价值占位符来构建你的关键条件表达式,如

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

(不要忘了占位符的冒号前缀!)

接下来,构建表达-attribute-values参数。请注意,它需要JSON格式。我总是试图忘记这个棘手的一点是,你不能只为数字插入42或为字符串插入“foo”。您必须告知DynamoDb 类型和值。 Ref AWS docs以了解如何格式化值规格的完整细分,如果您需要它可能会非常复杂。

对于Windows,您可以通过加倍双引号来避免引号。,

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

适用于MacOS/Linux中,单引号,需要周围的JSON:

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

感谢您的支持!在JSON周围使用单引号可能会使它更容易阅读:'--expression-attribute-values'{“:idValue”:{“N”:“42”}}'' –

+0

嗯..绝对同意是更具可读性,只是尝试过,但准备更新这个答案,至少在Windows上它不喜欢它 - 打破第一个双引号 –

+1

哦,这是OS X和Linux。 –

相关问题