You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DynamoDB检查数组是否存在空值的FilterExpression查询无结果问题

问题原因分析

你的查询没有返回结果,核心是对DynamoDB的contains函数规则和存储结构的匹配逻辑理解有误,具体问题分场景说明:

  • 场景1:你要查询的columnName是字符串类型,值为空串
    DynamoDB的contains函数针对字符串类型做判断时,仅支持匹配非空的子串,空串不会被认为是任何字符串的子串,所以contains(columnName, "")永远返回false,自然查不到结果。
    这种场景下你不需要用contains,直接用相等判断即可:
    FilterExpression : `columnName = :data`
    ExpressionAttributeValues:{
      ":data": ""
    }
    
  • 场景2:你要查询的columnName是List类型,存储结构为[{"S": ""}]
    此时List中的元素是Map结构,而你表达式里传入的匹配值是字符串类型的空串,类型不匹配自然无法命中。你需要传入和List元素结构完全一致的Map作为匹配值:
    FilterExpression : `contains (columnName, :data)`
    ExpressionAttributeValues:{
      ":data": {"S": ""}
    }
    
    注:如果是要判断List中某个指定位置的元素的S属性为空,也可以直接写路径匹配:columnName[0].S = :data

内容的提问来源于stack exchange,提问作者Arun Hossamani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:39:04