我找不到有关dynamodb BETWEEN运算符的任何详细文档,尤其是它如何处理字符串。
例如,如果我进行类似“ ... sort_key在'100'和'150'之间的查询,并且排序键是“ 120”,则它可以正常工作。 但是,如果我输入“ 1224 | 67”或“ 6653 | 67”之类的字符串,然后查询 在“ 3456 | 67”和“ 8968 | 67”之间,则无效。如何获得此比较在内部如何工作的信息?
答案 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"}
}'