如何在DynamoDB中用PartiQL查询含嵌套error项的非活跃设备
问题原因
你编写的查询语句没有生效,是因为DynamoDB PartiQL中直接用IS NOT NULL判断嵌套属性的存在性不符合预期,该语法无法准确识别Map结构中未定义的键,会出现误判。
解决方案
使用DynamoDB内置的attribute_exists()函数做属性存在性校验,修改后的查询语句如下:
SELECT * FROM "table" WHERE "device"."active" = 0 AND attribute_exists("device"."error")
可选优化
如果你需要同时排除error是空对象{}的情况,可以额外加一层判断:
SELECT * FROM "table" WHERE "device"."active" = 0 AND attribute_exists("device"."error") AND "device"."error" <> {}
内容的提问来源于stack exchange,提问作者Simon Rex
相关产品推荐
相关产品推荐

