当前位置: 首页 > 知识库问答 >
问题:

如何使用boto3在dynamodb中查询大于排序键

容飞掣
2023-03-14

我有一个dynamodb表,它的字符串主键名为name,数字排序键名为age。我想获取dynamodb表中年龄小于30岁的项目。我知道,由于我的过滤器位于一个键上,我可以使用查询而不是扫描。

所以我尝试了:response=table.query(KeyConditionExpression=Key('age').lt(decimal.decimal(30)))response

但这将返回响应:

ClientError: An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: name

看来我需要为查询提供一个分区键?这是否意味着我只能查询给定姓名的年龄?

在boto3中执行此操作的代码是什么?


共有1个答案

华福
2023-03-14

是的,这是真的。查询需要分区键,因为它仅在特定分区上运行。

您需要在用例中使用扫描过滤器,但这可能会有点昂贵,具体取决于表的大小。

理想的解决方案是跟踪所有分区键,并对它们进行并行查询。

 类似资料:
  • 如有任何帮助,不胜感激

  • 您好,我是DynamoDB新手,我创建了一个表,其中包含分区键“pk”和排序键“id” 在then item explorer中,我可以用pk进行查询并对键值进行排序,这似乎很有效。 在PartiQL编辑器中我做 我得到的错误过滤器表达式只能包含非主键属性:主键属性:id 我不知道如何在键条件中指定排序键,而不是使用WHERE子句指定筛选条件。

  • 我在DynamoDB中有一个表,我需要得到一个记录列表(Java),这些记录是从最后一天开始的。它们都有dateTime属性。 我所指的表的相关属性:customerUrl(string,hashkey)、dateTime(number,range key)和其他一些不相关的属性 我已经尝试过用dateTime的hashkey设置一个全局二级索引,但没有范围键。此索引名为“performanceI

  • 是否有一种方法可以使用查询dynamodb的。我找不到任何在线教程或资源。

  • 在DynamoDB中,我有一个表,其中每条记录都有两个日期属性,

  • 在他们的留档中,AWS提到了用于查询的关键条件表达式: 该条件可以选择对单个排序键值执行多个比较测试之一。这允许Query检索具有给定分区键值和排序键值的一个项目,或具有相同分区键值但不同排序键值的多个项目。 但是,我无法使其正常工作,例如,生成类似以下内容的内容:pk=:pk AND(begins\u with(sk,:foo)或begins\u with(sk,:bar))我得到了错误