Java DynamoDB:仅获取所有唯一哈希键的最新项
给定一个带有分区键Java DynamoDB:仅获取所有唯一哈希键的最新项,java,amazon-dynamodb,aws-sdk,aws-java-sdk,Java,Amazon Dynamodb,Aws Sdk,Aws Java Sdk,给定一个带有分区键id和排序键date\u epoch的DynamoDB表 我会有这样的项目: id | date_epoch ----------------- 1 | 1535961978 2 | 1535961996 1 | 1535962033 2 | 1535962055 3 | 1535962064 5 | 1535962073 1 | 1535962080 2 | 1535962085 对于每个给定的唯一id,我只想要它的最新项
id
和排序键date\u epoch
的DynamoDB表
我会有这样的项目:
id | date_epoch
-----------------
1 | 1535961978
2 | 1535961996
1 | 1535962033
2 | 1535962055
3 | 1535962064
5 | 1535962073
1 | 1535962080
2 | 1535962085
对于每个给定的唯一id
,我只想要它的最新项目。因此,从这个样本数据中,我只想要以下结果:
id | date_epoch
-----------------
3 | 1535962064
5 | 1535962073
1 | 1535962080
2 | 1535962085
我可以用非常难看的代码来解决这个问题。我得到了每个唯一的id
,然后对每个id
进行迭代,只得到了最新的。使用CANINDEXFORWARD(false)
和。使用MaxResultSize(1)
(如和所示),但似乎必须有更好的方法来实现这一点
我们可以设置一个扫描过滤器来限制最大项目数或其他我没有想到的东西吗?这更多的是一个评论而不是一个答案,但这里是这样的:不-你不能通过扫描得到你想要的答案。没有办法制作一个过滤器,即使有,你仍然需要支付扫描的全部费用(尽管这样可以节省网络带宽) 你的选择是:
注意,在第二个例子中有一些警告:你必须容忍最终的一致性;而且,您不能每秒更新任何项目超过1000次(尽管实际限制较低,可能为6-700次)感谢您的坦率,很高兴我没有忽略解决方案中的某些内容