【问题标题】:What is a valid dynamodb key-condition-expression for the cli什么是 cli 的有效 dynamodb 键条件表达式
【发布时间】:2016-02-15 14:04:31
【问题描述】:

谁能告诉我有效的关键条件表达式是什么。我正在尝试在一个名为 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?"

我需要输入什么哈希值?文档对这个恕我直言有点蹩脚。任何帮助表示赞赏,即使它只是一个好的文档的链接。

【问题讨论】:

    标签: amazon-dynamodb aws-cli dynamo-local


    【解决方案1】:

    这是一个仅命令行的方法,您可以在没有中间文件的情况下使用。

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

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

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

    接下来,构造一个表达式-属性-值参数。请注意,它需要 JSON 格式。我总是试图忘记的一个棘手的问题是,你不能只插入 42 作为数字或 "foo" 作为字符串。您必须告诉 DynamoDb 类型和值。参考AWS docs,详细了解如何格式化值规范,如果需要,这可能会非常复杂。

    对于 Windows,您可以通过将引号加倍来转义其中的引号,例如,

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

    对于 MacOS/Linux,JSON 周围需要单引号:

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

    【讨论】:

    • 谢谢!在 JSON 周围使用单引号可能会使其更易于阅读:--expression-attribute-values '{":idValue":{"N":"42"}}'
    • 嗯.. 绝对同意这更具可读性,只是尝试了它以准备更新此答案,并且至少在 Windows 上它不喜欢它——在它达到第一个双倍后中断-报价
    • 哎呀,那是在 OS X 和 Linux 上的。
    • 单引号救了我。
    【解决方案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

    【讨论】:

    • MyHashKey - 将是您的哈希键值,这里我将其作为字符串作为参考,“abc”将是哈希键的值
    • 在您的问题中,您询问了我为什么使用它,我也会更新我的问题以进行扫描
    • 为了您可以使用扫描,我已经更新了答案
    • 谢谢,扫描确实为我提供了一些数据,但要获得绿色勾号,我想知道如何让我的查询正常工作 ;-)
    • @MarkDickinson 我已经指定在我的示例中替换 get-item 来查询,我已经更新了答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2019-03-22
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多