Dynamodb BETWEEN操作字符串

时间:2019-10-03 12:53:59

标签: amazon-dynamodb dynamodb-queries

我找不到有关dynamodb BETWEEN运算符的任何详细文档,尤其是它如何处理字符串。

例如,如果我进行类似“ ... sort_key在'100'和'150'之间的查询,并且排序键是“ 120”,则它可以正常工作。 但是,如果我输入“ 1224 | 67”或“ 6653 | 67”之类的字符串,然后查询  在“ 3456 | 67”和“ 8968 | 67”之间,则无效。如何获得此比较在内部如何工作的信息?

1 个答案:

答案 0 :(得分:0)

根据您的情况,您需要使用表达式属性名称表达式属性值。在任何DynamoDB查询中,这都是非常好的做法。

请注意,您还需要设置一个分区键(请参见下面的#pk:pk)。

aws dynamodb query \
    --table-name TABLE_NAME \
    --key-condition-expression "#pk = :pk AND #sk BETWEEN :a and :b" \
    --expression-attribute-names '{"#sk": "sort_key", "#pk": "partition_key"}' \
    --expression-attribute-values '{":a": {"S":"3456|67"}, ":b": {"S":"8968|67"}, ":pk":{"S":"partition_key_value"}}'

我有一段时间没有使用这种语法了,可能有一些小的语法错误,但这是您必须使用BETWEEN进行查询的步骤。

请参阅有关KeyConditions的最后一个示例:

aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \
    --expression-attribute-values '{
        ":a": {"S": "No One You Know"}, 
        ":t1": {"S": "A"}, 
        ":t2": {"S": "M"}
    }'