Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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 web services DynamoDB:排序和筛选索引_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Amazon web services DynamoDB:排序和筛选索引

Amazon web services DynamoDB:排序和筛选索引,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我有一个表线程带有id(数字),最后一条消息(数字),并且是有效的(数字) 我想得到有效=1的结果,并按最后一条消息进行排序 我将id设置为分区键(hash),作为排序键有效,然后创建了一个名为“lastMessageValidIndex”的全局二级索引,其中分区键有效,排序键为lastmessage,但它不起作用 有什么想法吗 谢谢。您需要查询lastMessageValidIndex。查询是否有效=1,您应该按照最后一条消息的顺序获得结果您需要查询最后一条消息ValidIndex。查询是否有

我有一个表线程带有id(数字),最后一条消息(数字),并且是有效的(数字)

我想得到
有效=1的结果,并按
最后一条消息进行排序

我将id设置为分区键(hash),作为排序键有效,然后创建了一个名为“lastMessageValidIndex”的全局二级索引,其中分区键有效,排序键为lastmessage,但它不起作用

有什么想法吗


谢谢。

您需要查询lastMessageValidIndex。查询
是否有效=1
,您应该按照
最后一条消息的顺序获得结果

您需要查询最后一条消息ValidIndex。查询
是否有效=1
,您应该按照
最后一条消息的顺序获得结果

noSQL(因此也是DynamoDB)的困难之一是您不能只查询所有内容。只能查询索引,并且索引必须是唯一的(哈希范围组合)。如果有两行具有相同的
last_valid
last_message
值,则GSI中只会插入一行

分区键
是有效的
只有几个变量(可能只有0和1),这会影响分区(因此得名)。如果数据库被大量使用,您将遇到问题(另请参阅)


如果<>代码> iSysReals不经常更改,可以考虑创建2个表:一个只有有效的,一个只有无效线程。然后可以查询正确表中的主键。当

有效时
被切换,您只需将记录从一个表移动到另一个表。

noSQL(因此也是DynamoDB)的困难之一是您不能只查询所有内容。只能查询索引,并且索引必须是唯一的(哈希范围组合)。如果有两行具有相同的
last_valid
last_message
值,则GSI中只会插入一行

分区键
是有效的
只有几个变量(可能只有0和1),这会影响分区(因此得名)。如果数据库被大量使用,您将遇到问题(另请参阅)


如果<>代码> iSysReals不经常更改,可以考虑创建2个表:一个只有有效的,一个只有无效线程。然后可以查询正确表中的主键。当切换到

有效时,只需将记录从一个表移动到另一个表。

我尝试将IndexName设置为lastMessageValidIndex,但顺序没有改变。你有关于结构和查询的例子吗?二级索引的名称无关紧要。您只需要查询二级索引。dynamodb为您排序结果。所以,如果你得到了结果,那么你的查询是可以的,但也许你的索引方案是错误的。“我设置了IndexName”是指查询的参数。我试图将IndexName设置为lastMessageValidIndex,但顺序没有改变。你有关于结构和查询的例子吗?二级索引的名称无关紧要。您只需要查询二级索引。dynamodb为您排序结果。所以,如果你得到了结果,那么你的查询是可以的,但也许你的索引方案是错误的。“我设置了IndexName”是指查询的参数。Luc,谢谢。你有主意了吗?我发现我不能扫描,因为我不能使用ScanIndexForward,但我甚至不能使用Query,因为我需要为主键指定一个值,但我希望所有结果都有一个特定的FilterExpression和顺序。我不想用PHP“后期生成”结果来设置顺序。Luc,谢谢。你有主意了吗?我发现我不能扫描,因为我不能使用ScanIndexForward,但我甚至不能使用Query,因为我需要为主键指定一个值,但我希望所有结果都有一个特定的FilterExpression和顺序。我不想使用PHP“后期生成”结果来设置顺序。