代码之家  ›  专栏  ›  技术社区  ›  Suhail Gupta

不支持查询键条件:已具有哈希和范围键

  •  1
  • Suhail Gupta  · 技术社区  · 7 年前

    我想询问迪纳摩 modified_time > 1 day jstatus = Error

    在这里 JobStatusIndex Global Secondary Index 有, modified_time 作为 Partition Key jstatus 作为 sort key .

     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
    

    这可能是什么原因?我就是不明白。

    我已经经历了一些这样的问题,但它并没有解决问题。我已经准备好了所需的钥匙。我错过了什么?

    1 回复  |  直到 7 年前
        1
  •  5
  •   F_SO_K    7 年前

    您只能在分区键(modified_time)上使用等于运算符。要进行查询,必须指定单个分区键。

    根据你想要实现的目标,你有很多不同的选择。最可能的情况是,您的分区键和排序键对于您的GSI是错误的。如果将jstatus作为分区键,将modified_time作为排序键,则可以执行查询。

    或者你可以考虑做一个 scan ,这不需要您指定任何索引或键。