是否有任何方法可以根据排序顺序和名称对DynamoDB中的数据进行排序。
例如,我有一些记录包含以下数据:
- 订单:1,名称:aaa
- 订单:2,名称bbb
- 订单:3,名称:ccc
- 订单: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