不使用主键的AppSync解析器查询表/二级索引

时间:2018-11-14 01:41:15

标签: amazon-web-services amazon-dynamodb aws-appsync

从官方AWS documentation看来,要查询dynamodb中的项目,需要为主键提供一个相等的键表达式。但是,AppSync doc没有明确说明这一点。我想知道在解析器中是否可以查询dynamodb而不为索引或表的主键提供相等键表达式?例如,我可以执行以下操作吗?

primaryKey!= anInput

还是完全省略等式表达式,而在其他属性上使用表达式?

2 个答案:

答案 0 :(得分:0)

AppSync文档说: “查询表达式。必须指定此字段。”对于DDB查询,DDB文档说:查询操作基于主键值查找项目。您可以查询具有复合主键(分区键和排序键)的任何表或二级索引。

答案 1 :(得分:0)

可以在不提供主键(或索引)键条件表达式的情况下从DynamoDB检索记录,但是您必须使用.操作,该操作访问表(或索引)中的每个项目

AWS的AppSync Scan documentation中的示例:

Scan

DynamoDB Scan API

  

“扫描”操作通过访问表或辅助索引中的每个项目来返回一个或多个项目和项目属性。要使DynamoDB返回较少的项目,可以提供FilterExpression操作。

关于您发现与特定主键不匹配的项目的具体问题:

  

primaryKey!= anInput

如果您的primaryKey是分区键+排序键的组合,则应考虑在括号中使用{ "version" : "2017-02-28", "operation" : "Scan", "filter" : { "expression" : "begins_with(title, :title)", "expressionValues" : { ":title" : { "S" : "${context.arguments.title}" } }, } } 和逻辑NOT运算符:

AND