我正在尝试查询 Dynamo 的 modified_time > 1 天
和 jstatus = Error
此处,JobStatusIndex
是全局二级索引
,其中 modified_time
作为分区键
,jstatus
作为排序键
。
dynamo.query({
TableName: "Jobs",
IndexName: "JobStatusIndex", // Global Secondry Index
KeyConditionExpression: `modified_time >= :ter and jstatus = :ste`,
ExpressionAttributeValues: {
':ter': moment().subtract(1, 'day').unix(),
':ste': "Error"
}
},(err) => console.log(err))
但我收到一条错误消息:
ValidationException: Query key condition not supported
这可能是什么原因?我只是不明白这一点。
我已经解决了一些SO问题,但没有解决问题。我已经准备好了所需的 key 。我错过了什么?
最佳答案
您只能在分区键 (modified_time) 上使用等于运算符。要进行查询,您必须指定单个分区键。
根据您想要实现的目标,您有很多不同的选择。最有可能的是您的 GSI 的分区键和排序键的方式错误。如果将 jstatus 设置为分区键,将 modded_time 设置为排序键,则可以执行查询。
或者,您可以考虑执行 scan ,它不需要您指定任何索引或键。
关于node.js - 不支持查询关键条件: Already have a Hash and a Range Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47771226/