我想获取一个附加到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值?
答案 0 :(得分:1)
默认情况下,全局二级索引是稀疏的。
对于表中的任何项目,DynamoDB只会写一个对应的 如果索引键值存在于全局二级索引中 该项目。对于全局二级索引,这是索引分区 键及其排序键(如果有)。如果索引键值不 出现在每个表项目中,据说索引是稀疏的。
如果您需要myAttr
属性空值包含在GSI表中,则可以设置一个虚拟值(例如“ NULL”),然后查询该值。请注意,所有表格项目现在都将包含在GSI表格中,这会增加您的费用。