我是DynamoDB和Python的新手,遇到了一个问题,我必须查询DynamoDB并根据日期列(不是排序键)按降序对数据进行排序。我没有找到任何使用Boto3 API对数据进行排序的方法。
经过2天的广泛研究stackoverflow,和其他网站只回答我得到,这是不可能的.所以只是把我最后的努力.
Date列是String类型,数据格式为YYYYMMDD_HHMMSS。目前我正在使用下面的代码来检索JSON格式的数据。
result = TABLE.query(
KeyConditionExpression="partitionKey = :pk",
ExpressionAttributeValues={
":pk": partitionKey
}
)
字符串
这是第一个对查询进行排序的好方法,但是如果不可能使用python库对数据进行排序,它会转换result["items"]
并使用排序后的json进行响应。result["items"]
是:
[
{
"id": "colV",
"dateColumn": "20231104_122600",
# ...
},
{
"id": "colV",
"dateColumn": "20231105_122600",
# ...
},
{
"id": "colX",
"dateColumn": "20231114_122600",
# ...
},
{
"id": "colX",
"dateColumn": "20231105_122600",
# ...
},
# ...
]
型
为清晰起见,进行了小的更正:数据应根据id使用dateColumn进行格式化:因此,对于记录,它应像:Desc order of date
[
{
"id": "colV",
"dateColumn": "20231105_122600",
# ...
},
{
"id": "colV",
"dateColumn": "20231104_122600",
# ...
},
{
"id": "colX",
"dateColumn": "20231114_122600",
# ...
},
{
"id": "colX",
"dateColumn": "20231105_122600",
# ...
},
# ...
型
]
1条答案
按热度按时间dluptydi1#
你已经有一个排序键在表上了吗?如果你有,你有2个选择:
1.创建一个GSI,使用date作为排序键。这将允许基于日期自动排序
1.在客户端使用python的sorted函数进行排序。
字符串