从官方AWS documentation看来,要查询dynamodb中的项目,需要为主键提供一个相等的键表达式。但是,AppSync doc没有明确说明这一点。我想知道在解析器中是否可以查询dynamodb而不为索引或表的主键提供相等键表达式?例如,我可以执行以下操作吗?
primaryKey!= anInput
还是完全省略等式表达式,而在其他属性上使用表达式?
答案 0 :(得分:0)
AppSync文档说: “查询表达式。必须指定此字段。”对于DDB查询,DDB文档说:查询操作基于主键值查找项目。您可以查询具有复合主键(分区键和排序键)的任何表或二级索引。
答案 1 :(得分:0)
可以在不提供主键(或索引)键条件表达式的情况下从DynamoDB检索记录,但是您必须使用.
操作,该操作访问表(或索引)中的每个项目
AWS的AppSync Scan documentation中的示例:
Scan
“扫描”操作通过访问表或辅助索引中的每个项目来返回一个或多个项目和项目属性。要使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