DynamoDB设置ScanIndexForward后GSI查询无结果问题求助
DynamoDB查询异常问题记录
数据表结构
| id(字符串) | message(字符串) | created(数字) | completed(布尔值) |
|---|---|---|---|
| 123 | Instruction | 1686731293161 | - |
| ... | ... | ... | ... |
| 129 | Instruction | 1686821275413 | false |
GSI配置
Partition key:messageSort key:createdProjected keys:全部
表格概况
- 部分条目缺失message和completed属性
- 虽message作为GSI分区键,该情况符合业务需求
查询参数(AWS SDK DynamoDB客户端)
{ TableName: "test-idStatus", IndexName: "messageCreatedIndex", KeyConditionExpression: "#message = :message and #created BETWEEN :createdfrom AND :createdto", ExpressionAttributeNames: { "#message": "message", "#created": "created", "#completed": "completed", }, ExpressionAttributeValues: { ":messageFunction": "Instruction", ":createdfrom": 1686817506000, // 2023-6-15 08:25 ":createdto": 1686821106000, // 2023-6-15 09:25 ":completed": "false", }, ScanIndexForward: false, Limit: 5, Select: "ALL_ATTRIBUTES", FilterExpression: "#completed = :completed", }
问题现象
- 上述查询能正常返回条目
- 但将
ExpressionAttributeValues中的createdfrom修改为1686731286000(2023-6-14 08:25)后,查询无返回结果(但返回了LastEvaluatedKey)。按逻辑,该时间范围包含之前的查询范围,应该能返回对应条目 - 该问题可在AWS控制台DynamoDB中复现
临时解决方法
移除ScanIndexForward参数后,查询恢复正常,可返回预期条目
内容的提问来源于stack exchange,提问作者kimondoe
相关产品推荐
相关产品推荐

