node.js - 不支持查询关键条件: Already have a Hash and a Range Key

标签 node.js amazon-web-services amazon-dynamodb

我正在尝试查询 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/

相关文章:

elasticsearch - 如何从 Amplify - AppSync - ElasticSearch - DynamoDB Stack 中获取看不见的附近文档?

node.js - Nodejs 并行编程使用线程

javascript - 带有谷歌地图的AWS服务器

java - ElasticSearch索引,更新API

amazon-web-services - 每个人都需要创建新的 key 对才能访问 EC2?

go - 具有多个条件的Dynamo putItem在本地堆栈中不起作用

Node.js Http 请求在正文中发送 Unicode(Bangla) 字符时返回 400 错误

node.js - npm install 无法解析 git 存储库 - 证书失败

amazon-web-services - 带有 cronjob + API 的 Amazon MapReduce

ios - 如何将 AWS DynamoDB 与数据集 ios swift 同步?