我有一个 dynamodb 表,分区键为“merchantId”,排序键为“date_service”,其中包含诸如 {"merchantId" : "BPTR234561" , "date_service" : "2021-03-16_order"}
之类的项目。
我需要查询特定日期范围内的所有项目。我知道我可以通过使用 begin_with like 来查询特定日期
table.query(
KeyConditionExpression = 'merchantId = :merchantId and begins_with(date_service , :ds)',
ExpressionAttributeValues = {
':merchantId' : 'BPTR234561',
':ds' : '2021-03-12'
})
但我需要按日期范围查询。一种方法是将日期存储为一个单独的属性,并像这样使用过滤器表达式:
table.query(
KeyConditionExpression = 'merchantId = :merchantId',
FilterExpression = 'date BETWEEN :sd AND :ed'
ExpressionAttributeValues = {
':merchantId' : 'BPTR234561',
':sd' : '2021-03-12',
':ed' : '2021-03-21'
})
我试图找到一种方法,我可以使用现有的排序键来执行此查询。有没有办法做到这一点,还是我应该使用 FilterExpression 以第二种方式运行查询?