Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb 字符串操作之间的Dynamodb_Amazon Dynamodb_Dynamodb Queries - Fatal编程技术网

Amazon dynamodb 字符串操作之间的Dynamodb

Amazon dynamodb 字符串操作之间的Dynamodb,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我找不到任何关于dynamodb的详细文档,尤其是它如何处理字符串 例如,如果我进行诸如“…sort_key在'100'和'150'之间”这样的查询,并且sort key是“120”,那么它工作正常。 但如果我生成“1224 | 67”或“6653 | 67”之类的字符串,然后查询 在“3456 | 67”和“8968 | 67”之间,它不起作用。如何获取此比较在内部如何工作的信息 在您的情况下,您需要使用表达式属性名称和表达式属性值。这在任何DynamoDB查询中都是一个非常好的实践 请注意,

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

例如,如果我进行诸如“…sort_key在'100'和'150'之间”这样的查询,并且sort key是“120”,那么它工作正常。 但如果我生成“1224 | 67”或“6653 | 67”之类的字符串,然后查询
在“3456 | 67”和“8968 | 67”之间,它不起作用。如何获取此比较在内部如何工作的信息

在您的情况下,您需要使用表达式属性名称表达式属性值。这在任何DynamoDB查询中都是一个非常好的实践

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

aws dynamodb查询\
--表名表名\
--关键条件表达式“#pk=:pk和#sk在:a和:b之间”\
--表达式属性名称“{”#sk”:“排序#键”,“#pk”:“分区#键”}”\
--表达式属性值“{”:a:{“S”:“3456 | 67”},”:b:{“S”:“8968 | 67”},”:pk:{“S”:“partition|u key_value”}
我有一段时间没有使用这种语法了,可能有一些小的语法错误,但这是您必须执行的操作,以便在之间使用
进行查询

请参见最后一个关于以下内容的示例:

aws dynamodb查询\
--表名音乐\
--关键条件表达式'Artist=:a和SongTitle介于:t1和:t2之间'\
--表达式属性值'{
“:a:{S:“你不认识任何人”},
“:t1”:{“S”:“A”},
“:t2”:{“S”:“M”}
}'

您好,谢谢您的回答,我正是这么做的,但我正在使用boto3。我的问题的重点是,当我使用复合字符串进行查询时,有时会得到奇怪的结果。似乎它适用于由“|”而不是“|”分隔的字符串。有趣的。。。我现在不能测试它,但我会试试看。你是很快就有最后期限了还是可以等到周末?“有时”是什么意思?请随意编辑问题,解释“有时”:)您好,如果您有任何信息,我将不胜感激。关于“有时”,我的意思是它的工作不可预测。例如,如果我使用诸如“{timestamp}{id}”这样的散列键进行查询,则它不起作用,但“{id}{timestamp}”起作用。使用“|”作为分隔符有时有效有时无效(不可对比)。@Kirimaks您可能希望对复合字符串的元素进行零填充,例如
000123 | 000420
。这是因为dynamo比较是字典式的,这意味着
1<10<2
,而您可能想要
1<2<10
,所以将其设置为
01<02<10
。您是对的@DimaTisnek,通常需要填充内容