给定一个DynamoDB表,其中包含分区键id
和排序键date_epoch
。
我会有这样的项目:
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
并得到最新的项目.withScanIndexForward(false)
和.withMaxResultSize(1)
(如this example和this example所示),但似乎必须有更好的方法来做到这一点。
我们可以设置扫描过滤器来限制最大项目或其他我没有想到的东西吗?
这不仅仅是一个评论,而是一个答案,但在这里它是:不 - 你无法通过扫描得到你正在寻找的答案。没有办法制作过滤器,即使有过,你仍然需要支付扫描的全价(尽管你会节省网络带宽)。
你的选择是:
请注意,在第二个例子中有一些警告:你必须容忍最终的一致性;并且您不得每秒更新任何项目超过1000次(尽管实际限制实际上更低 - 可能是6-700)