根据数字顺序从DynamoDB获取数据



是否有任何方法可以根据排序顺序和名称对DynamoDB中的数据进行排序。

例如,我有一些记录包含以下数据:

  1. 订单:1,名称:aaa
  2. 订单:2,名称bbb
  3. 订单:3,名称:ccc
  4. 订单:25,名称aaa

当我从dynamodb得到响应时,我得到的顺序是1,2,4,3。我的预期订单是1、2、3,然后是4。

这是我正在使用的查询:

results = table.query(
IndexName="table-Id-index",
KeyConditionExpression=Key("id").eq('2'),
ScanIndexForward=True
)

我缺什么了吗?

DynamoDB使用字节顺序进行排序,这意味着它将按顺序查看每个字符,并据此对其进行排序。

数字为:1,2,3,25

DynamoDB解释排序的方式实际上是这样的:

  • [1,NULL]
  • [2]
  • [3,空]
  • [2,5]

它首先检查所有的第一个字符,并根据它进行排序,然后再检查下一个字符。

  • [1,NULL]
  • [2]
  • [2,5]
  • [3,空]

由于2<3,你的25分或2分和5分,就像DynamoDB看到的那样,在三分之前排序。NULL<5,所以它被排序在2之后。

如果你想进行更多的数字排序,我建议你将数字存储为带前导零的字符串,这会起作用:

  • 00001
  • 00002
  • 00003
  • 00025

最新更新