Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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
Java 使用多个排序键查询Dynamodb_Java_Amazon Dynamodb_Dynamodb Queries - Fatal编程技术网

Java 使用多个排序键查询Dynamodb

Java 使用多个排序键查询Dynamodb,java,amazon-dynamodb,dynamodb-queries,Java,Amazon Dynamodb,Dynamodb Queries,如何查询按两个属性排序的dynamo db 比如说,我的实体是github_存储库。属性名为S、所有者S、手表I、星星I和叉子I S-string:I-int 我想返回stars和forks列出的github_存储库前10名。比方说,如果两个项目有相同的星星,我使用叉子作为排序上的平局断路器 谢谢您只能按一个键进行排序。对于您的问题,我可以想到两种可能的解决方案: 如果适合您的用例,请使用星号和叉的总和作为排序键。 通过开始获取前十名,然后在本地对forks进行排序,但如果nr10的forks少

如何查询按两个属性排序的dynamo db

比如说,我的实体是github_存储库。属性名为S、所有者S、手表I、星星I和叉子I

S-string:I-int

我想返回stars和forks列出的github_存储库前10名。比方说,如果两个项目有相同的星星,我使用叉子作为排序上的平局断路器


谢谢

您只能按一个键进行排序。对于您的问题,我可以想到两种可能的解决方案:

如果适合您的用例,请使用星号和叉的总和作为排序键。 通过开始获取前十名,然后在本地对forks进行排序,但如果nr10的forks少于nr11,则可能会出现问题。
如果您知道如何对星形、分叉元组进行排序,可以将其序列化为字符串,并将其用作排序键

在你的情况下,你说:

我想通过stars和forks返回前10个github_存储库。比方说,如果两个项目有相同的星星,我使用叉子作为排序上的平局断路器

所以,如果星星是数字0到9,叉也是数字0到9,你只要把这两个数字连在一起就可以得到一个字符串。如果你想先对最高的星星进行反向排序,也可以选择10号。例如,一个有3颗星和6个叉的项目将得到字符串74。如果一个项目比另一个项目有更多的星星,它将是排序顺序中的第一个。如果两件物品有相同的星星,那么有更多叉子的将是第一件。按你的要求

如果星号和叉的含义不同,或者排序要求不同,那么细节也会不同——但在许多情况下,您可以找到一种方法,将要排序的内容编码为一个字符串,DynamoDB可以按字典顺序进行排序