AWS Appsync-查询DynamoDB以获取空索引

时间:2018-09-20 17:17:54

标签: amazon-dynamodb aws-appsync

我想获取一个附加到AppSync架构的Query上的DynamoDB表,以仅获取具有全局二级索引(GSI)的属性的 null或empty 值)。

我尝试了以下操作,但没有得到结果:

  

抛出[KeyConditionExpression中使用的无效运算符:OR]:

"operation" : "Query",
"index" : "myAttrIndex",
"query" : {
    "expression" : "attribute_not_exists(myAttr) or myAttr = :null",
    "expressionValues" : {
        ":null" : { "NULL" : null }
    }
}
  

抛出[KeyConditionExpression中使用的无效运算符:attribute_not_exists]:

"operation" : "Query",
"index" : "myAttrIndex",
"query" : {
    "expression" : "myAttr = :null",
    "expressionValues" : {
        ":null" : { "NULL" : null }
    }
}
  

抛出[一个或多个参数值无效:条件参数类型与架构类型不匹配]:

"operation" : "Query",
"index" : "myAttrIndex",
"query" : {
    "expression" : "myAttr = :null",
    "expressionValues" : {
        ":null" : { "NULL" : null }
    }
}

如何编写查询文档过滤出​​字符串属性的非null值

1 个答案:

答案 0 :(得分:1)

默认情况下,全局二级索引是稀疏的。

  

对于表中的任何项目,DynamoDB只会写一个对应的   如果索引键值存在于全局二级索引中   该项目。对于全局二级索引,这是索引分区   键及其排序键(如果有)。如果索引键值不   出现在每个表项目中,据说索引是稀疏的。

如果您需要myAttr属性空值包含在GSI表中,则可以设置一个虚拟值(例如“ NULL”),然后查询该值。请注意,所有表格项目现在都将包含在GSI表格中,这会增加您的费用。

有关更多详细信息: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-general-sparse-indexes.html